2010-12-28 11 views
20

Quando utilizzo il codice seguente e analizzo localmente l'xml, funziona correttamente ma quando si carica lo stesso script sul server mostra un errore.Errore nella riga 2 della colonna 1: Contenuto aggiuntivo alla fine del documento

Nota: ho recuperato $lng e $lat dalla stringa di query e funziona correttamente localmente.

$lng=$_GET['lng']; 
$lat=$_GET['lat']; 
$conn=new LoginSystem(); 
$conn->connect(); 
$dom = new DOMDocument("1.0"); 

$query="select catch_id,catch_details,image from mycatch where longitude='$lng' AND latitude='$lat'"; 
$result = mysql_query($query); 

if (!$result) { 
    die("Invalid query: " . mysql_error()); 
} 

header("Content-type: text/xml"); 

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    $node = $dom->createElement("mycatch"); 
    $node = $dom->appendChild($node); 
foreach ($row as $fieldname => $fieldvalue) { 
     $child = $dom->createElement($fieldname); 
    $child = $node->appendChild($child); 
    $value = $dom->createTextNode($fieldvalue); 
    $value = $child->appendChild($value); 
    } 
} 

$conn->disconnect(); 
$xml_string = $dom->saveXML(); 
echo $xml_string; 

Sul server genera questo errore. E il documento è anche vuoto .....

Questa pagina contiene i seguenti errori:
errore sulla linea 2 a colonna 1: contenuti extra alla fine del documento Qui di seguito è un rendering della pagina fino al primo errore.

+0

Che lingua è questa? –

+0

questo codice è in lingua php – hunter

risposta

3

Su ogni ciclo del set di risultati, si sta aggiungendo un nuovo elemento principale al documento, la creazione di un documento XML in questo modo:

<?xml version="1.0"?> 
<mycatch>...</mycatch> 
<mycatch>...</mycatch> 
... 

Un documento XML può avere un solo elemento radice, ecco perché l'errore sta affermando che c'è "contenuto extra". Creare un unico elemento radice e aggiungere tutti gli elementi mycatch a che:

$root = $dom->createElement("root"); 
$dom->appendChild($root); 
// ... 
while ($row = @mysql_fetch_assoc($result)){ 
    $node = $dom->createElement("mycatch"); 
    $root->appendChild($node); 
38

Penso che si sta creando un documento che assomiglia a questo:

<mycatch> 
    .... 
</mycatch> 
<mycatch> 
    .... 
</mycatch> 

Questo non è un documento XML valido in quanto ha più di un elemento radice. È necessario disporre di un singolo elemento di livello superiore, come in

<mydocument>  
    <mycatch> 
     .... 
    </mycatch> 
    <mycatch> 
     .... 
    </mycatch> 
    .... 
</mydocument> 
+2

Commento superbo. Come TF ho dimenticato questo? :( – ilight

+0

Sei un genio. – ViruMax

3

si potrebbe avere in uscita (forse output degli errori/debug) che precede la chiamata a

header("Content-type: text/xml"); 

Pertanto, il contenuto di essere consegnati al il browser non è "xml" ... questo è ciò che il messaggio di errore sta tentando di dirti (almeno è stato il caso per me e ho avuto lo stesso messaggio di errore che hai descritto).

5

Il problema è una stringa di connessione al database, uno dei parametri della funzione di connessione al database MySQL non è corretto, quindi c'è un messaggio di errore nell'output del browser, Basta fare clic sulla pagina di output e visualizzare il codice sorgente HTML vedrete la riga di errore seguita tramite dati di output XML (file) corretti. Ho avuto lo stesso problema e la soluzione di cui sopra ha funzionato perfettamente.

Problemi correlati