2011-02-06 55 views
2

在許多基於REST的API調用中,我們有名爲nextURL的參數,我們可以使用它來查詢下一個URL。這通常在根元素中(或者可能是下一個元素)只讀XML中的根元素

總的來說,你們怎麼看這個?如果您使用標準的XML解析器,它會讀取並加載整個XML,然後通過getElementsByTag讀取下一個URL。有更好的解決辦法嗎?讀取整個XML當然是浪費時間/記憶。

編輯:一個示例XML會是這樣的

<result pubisher="xyz" nextURL="http://actualurl?since_date=<newdate>"> 
<element>adfsaf</element> 
.. 
</result> 

我需要捕捉新的since_date不讀取整個XML。

回答

3

Python:您可以使用ElementTree iterparse method ...只要您想要的數據位於屬性中,該屬性將在您獲得啓動事件的時候解析。如果它在元素的文本或尾部,則必須等到結束事件。如果你編輯你的問題來顯示你的XML的外觀,那麼這將是一個好主意,並且用一個例子來解釋「或者在下一個」中。

0

術語「標準XML解析器」涵蓋了很多領域,以至於我不認爲你可以概括他們的行爲。例如,一個標準的DOM解析器是基於樹的,並且會將整個XML讀入內存,但是一個SAX解析器(我認爲StAX也是如此)只會隨着應用程序的需求推進而改變。聽起來像後者,一個SAX或StAX解析器,就是你需要的。

編輯:請務必閱讀KitsuneYMG關於SAX和StAX行爲之間差異的評論。

+2

SAX應該讀取xml併發送各種事件/回調。 StAX更多的是迭代器方法(eg-> xmlin.next()),並且隨時都可以輕鬆放棄。 java標準SAX閱讀器需要一個例外來放棄IIRC – KitsuneYMG 2011-02-06 07:06:13