2010-07-04 26 views
1

我從一個返回paginated XML的API中讀取數據。 API的輸出的基本格式是:如何重建分頁的XML文檔?

<candidates.list page="1" next_page="yes"> 
    <candidate /> 
    <candidate /> 
    <candidate /> 
</candidates.list> 

我的代碼是這樣的:

while (TRUE) { 
    $xml_str = file_get_contents($dest) 
    $xml = new SimpleXMLElement($xml_str); 

    // What should I do to append subsequent pages to my first page's XML? 

    if ($xml['next_page'] == 'yes') { 
    $dest = $new_destination; // I figure out the next page's API query here 
    } 
    else { 
    break; 
    } 
} 

return $xml; 

月的快樂第四,謝謝你!

+1

+1從夏天獲得「七月四日快樂」! – 2010-07-04 16:53:48

回答

0

SimpleXML是該工作的錯誤工具。 SimpleXML不是設計用於添加新節點,或者真的進行任何類型的操作。我轉而使用DOMDocument,並很快使用appendChild函數創建了一個解決方案。

0

我會將下一頁的候選人添加到$xml。您已經將XML解析爲SimpleXMLElement。或者如果你只關心這些,建立你自己的SimpleXMLElement候選對象。

作爲便箋,while(1)是不良形式。您可以更改您的邏輯或使用do/while()循環。

快樂4回!

+0

我想問題是,我應該如何將下一頁的候選人追加到$ xml中?除非我錯過了一些東西,否則SimpleXML似乎沒有簡單的方法來添加新節點。 – Summer 2010-07-04 17:00:11

0

是的,您必須使用基於DOM的解決方案或使用(例如)SAX方法即時創建不同的數據結構。對於高吞吐量,DOM無法很好地擴展(對象內存佔用非常大),所以如果這是您正在進行的唯一操作,那麼如果需要擴展,您可能需要考慮SAX。