2013-02-16 62 views
0
$file = simplexml_load_file($url); { 


    foreach($file->entry as $post) { 


    $row = simplexml_load_string($post->asXML()); // after adding this line, i get error message 

    $links = $row->xpath('//link[@rel="alternate" and @type="text/html"]'); 
    echo (string) $post->title; 
    echo (string) $links[0]['href']; 

我使用此腳本來解析原子提要。起初沒有工作,因爲它無法正確傳遞鏈接的href屬性。我添加了$row,即使它工作,它也會提供一個錯誤:「沒有定義條目上的etag的名稱空間前綴gd」。我正在尋找這個小時,找不到解決方案。我很親密。xml解析錯誤,使用php的asxml()

回答

0

該行$row = simplexml_load_string($post->asXML());,如果它的工作,將是一個冗長的寫作方式$row = $post->asXML()simplexml_load_string彼此執行相反的動作,所以你會回到你開始使用的同一個對象。

我認爲它在你的情況下行爲奇怪的原因是你的XML文檔使用「名稱空間」,$post->asXML()生成的XML片段本身並不完全作爲XML文檔工作。

我懷疑你原來的問題,這條線似乎奇蹟般地修復了,也是因爲命名空間,因爲XPath對它們非常敏感。查找使用registerXPathNamespace的示例並查看它們是否可以解決您的問題。如果沒有,請隨時發佈顯示您原始問題的後續問題,幷包括您正在處理的XML樣本。