2012-03-15 58 views
6

我想從這個鏈接解析RSS提要http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss 但是當我嘗試顯示它給了我下面的錯誤結果:開幕和結束標記錯配的標籤RSS數據過早結束

警告:DOM文檔:: load()[domdocument.load]:打開和結束標記不匹配:強行208和http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss中的描述,第207行的C:\ wamp \ www \ gazetaExpress \ scripts \ reader.php中的行209:

以及

警告:DOMDocument :: load()[domdocument.load]:數據提前結束在標籤RSS線2 http://www.gazetaexpress.com/rss.php?cid=1,13&part=rss,行:用C 226:\ WAMP \ WWW \ gazetaExpress \腳本\ reader.php上線17

,我使用解析腳本是

$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 

} 

當我嘗試從本網站嘗試其他RSS源時(例如運動:http://www.gazetaexpress.com/rss.php?cid=1,24&part=rss),它可以正常工作。正是上面的rss feed不起作用。有什麼辦法可以解決這個問題嗎?任何幫助將非常感激。

+1

錯誤在於飼料本身的構建/創作。沒有什麼可以真正做到的(除非你是提要的作者)。 – 2012-03-15 16:26:55

+0

最好的方法是聯繫該網站並通知他們他們的RSS源已損壞。 Opera提供此錯誤: XML解析失敗 XML解析失敗:語法錯誤(行:209,字符:159) 錯誤:不匹配的結束標記 – h00ligan 2012-03-15 16:28:01

回答

6

這是由於使用了<br>和其他自閉標籤。 dom試圖找到像這樣的結尾<br/>,其中<br開始,/>結束。現在的瀏覽器不會出現<tag>的問題,但是php dom函數仍然希望你保留XML標準,所以你需要找到<singletags>這個al,並用<singletags />代替它們,這比它工作得很好。

4

當您想要解析的片段不符合XML規範(例如,不使用'/'或未封閉標籤的自閉標籤),並且如果它不包含重複的ID,您可以嘗試使用它,這更容易。

$xmlDoc->loadHTML($xml);