2012-03-15 4 views
6

Sto cercando di analizzare RSS feed da questo link http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss ma quando provo la visualizzazione dei risultati mi dà il seguente errore:apertura e termina tag disadattamento & Fine prematura di dati in tag rss

Attenzione: DOMDocument :: load() [domdocument.load]: apertura e termina tag mismatch forte linea 208 e la descrizione in http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss, riga: 209 in C: \ wamp \ www \ gazetaExpress \ script \ reader.php sulla linea 17

nonché

Avviso: DOMDocument :: load() [domdocument.load]: Fine prematura dei dati in linea di tag rss 2 in http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss, riga: 226 in C: \ wamp \ www \ gazetaExpress \ scripts \ reader.php on line 17

lo script che sto usando per l'analisi è

$xmlDoc->load($xml); 

$x=$xmlDoc->getElementsByTagName('item'); 

for ($i=0; $i<6; $i++) { 
    $item_title=$x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue; 
    $item_link=$x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue; 
    $item_desc=$x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue; 

// and echo statements 

} 

Quando provo qualche altro feed RSS da questo sito (come lo sport: http://www.gazetaexpress.com/rss.php?cid=1,24&part=rss), funziona perfettamente. È esattamente il feed rss sopra che non funzionerà. C'è un modo per aggirarlo? ogni aiuto sarebbe molto apprezzato.

+1

L'errore è nella costruzione/creazione del feed stesso. Non c'è niente che tu possa davvero fare a riguardo (a meno che tu non sia l'autore del feed). –

+0

Il modo migliore sarebbe contattare il sito e informarli che il loro feed RSS è rotto. Opera restituisce questo errore: Errore XML non riuscito Errore XML non riuscito: errore di sintassi (Riga: 209, Carattere: 159) Errore: etichetta finale non corrispondente – h00ligan

risposta

6

Ciò è dovuto all'utilizzo di <br> e altri tag di chiusura automatica. Il dom cerca di trovare la fine come questa <br/> dove <br è l'inizio e /> è fine. I moderni browser non avranno problemi con <tag> ma la funzione dom php continua a voler mantenere lo standard XML, quindi è necessario trovare al <singletags> e sostituirli con <singletags /> di quanto funzioni perfettamente.

4

Quando il frammento che si desidera analizzare non è conforme alle specifiche XML (ad esempio tag di chiusura di auto senza '/' o tag non chiusi) e se si dosesn't contengono ID duplicati si può provare con loadHTML, è più permissiva .

$xmlDoc->loadHTML($xml);