0

有一个远程 xml 文件,我需要从中获取一组 xml 节点并在活动中显示。一种方法是完全下载它,然后执行 xpath 评估并获取节点集,如下所示

// using node I can drill further down to collect my relevant info 
NodeList names = (NodeList) xPath.evaluate("/library/artists/name", new InputSource(new FileReader(getDowloadedXMLFileLocation())), XPathConstants.NODESET);

另一种方法是使用拉式解析器,我想这将是更多代码来做一个简单的工作来提取 nodeset 。我想知道哪种方法在内存和速度方面表现更好?

4

2 回答 2

1

我在解析 XML 的最佳实践中找到了一个很好的答案

您还可以使用 XmlPullParser 来解析 xml。但是我建议如果可能的话,使用 json 而不是 XML,这会减少你的内存,而且谷歌在GSON中提供了它的包装机制,这是最好的。

链接。

1) http://vtd-xml.sourceforge.net/

于 2013-02-27T06:21:09.140 回答
1

定制代码与通用解决方案,等同于高性能与易用性。

XPath(and XLST, and JDOMetc) 将构造一个类似 DOM 的模型,并对其进行迭代。这将占用更多 RAM 和 CPU。XPath 很简单,但对于大文件来说可能真的很慢。它还要求您手头有完整的文件。将此用于小文件。

PullParser另一方面,就像只在您感兴趣的地方阅读文件,跳过其余部分。此外,一次只能将一个节点加载到 RAM 中。输入文件的大小没有限制,或者它是完全可用的还是通过媒体流式传输的。将此用于大型或流式文件。

于 2013-02-27T06:33:56.400 回答