2011-02-06 52 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