responseXML -> xml parse error

lup0z

Nuovo Utente
13 Ago 2009
2
0
0
Ciao a tutti,
ho un problema che mi sta facendo andare via di testa da un paio di giorni (e che ovviamente blocca tutto il lavoro!).
Spero sia questa la sezioen giusta per il post perché la mia domanda riguarda un po' AJAX, un po' javascript e un po' di XML.
Tramite richiesta AJAX, voglio che mi venga restituito un file xml con il metodo responseXML.
La pagina php che dovrebeb creare l'xml è questa:

PHP:
<?php 
header("Content-Type: text/xml"); 
include("connection.php"); 
$stream = mysql_connect($host,$user,$password)or die("Connessione non riuscita: " . mysql_error()); 
mysql_select_db($db, $stream) or die("Errore nella selezione del database"); 
$sql = "SELECT * FROM ch_comments"; 
$query = mysql_query($sql) or die('Error, insert query failed'); 
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"; 
while($result = mysql_fetch_array($query)){ 
    echo "<id>".$result['id']."</id>"; 
    echo "<title>".$result['title']."</title>"; 
    echo "<author>".$result['author']."</author>"; 
    echo "<latitude>".$result['latitude']."</latitude>"; 
    echo "<longitude>".$result['longitude']."</longitude>"; 
    echo "<content>".$result['content']."</content>"; 
} 
mysql_close($stream); 
?>


Controllando con Firebug, ho notato che sulla risposta di responseXML, mi viene dato un parse error sempre sul primo tag del file xml che restituisco.
L'errore riscontrato è:
Errore interpretazione XML: contenuto illegale dopo l'elemento Indirizzo:[...]

Inoltre ho notato che l'errore è sempre alla fine del primo elemento xml stampato. Non ha importanza quanto lungo sia, ma l'errore è sempre alla fine di questo.
Non riesco a capire.
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Un documento XML deve contenere un unico tag di apertura e chiusura che contiene l'intero documento.
Ad esempio:

HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<elemento-contenitore>
    <elemento1>1</elemento1>
    <elemento2>2</elemento2>
    ...
    <elementon>n</elementon>
</elemento-contenitore>
prova a modificare il tuo codice:

PHP:
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"; 
echo "<nome-elemento>"; 
while($result = mysql_fetch_array($query)){ 
    echo "<id>".$result['id']."</id>"; 
    echo "<title>".$result['title']."</title>"; 
    echo "<author>".$result['author']."</author>"; 
    echo "<latitude>".$result['latitude']."</latitude>"; 
    echo "<longitude>".$result['longitude']."</longitude>"; 
    echo "<content>".$result['content']."</content>"; 
} 
echo "</nome-elemento>";
 

lup0z

Nuovo Utente
13 Ago 2009
2
0
0
Tu hai salvato aprte della mia tesi di laurea: ritieniti pure un eroe da oggi :D
Che errore stupido che era! Forse passare mattina e pomeriggio davanti a queste cose, mi fà andare un po' in palla il cervello!
Grazie, grazie, grazie!