在android中是做XPath评估还是拉动解析器更快?

时间:2013-02-27 06:15:36

标签: android xml

有一个远程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);

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

2 个答案:

答案 0 :(得分:1)

我在Best practices for parsing XML

找到了一个很好的答案

您还可以使用XmlPullParser来解析xml。但我建议如果可能的话,使用json代替XML,这会减少你的记忆,Google会在GSON中提供最好的包装机制。

链接。

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

答案 1 :(得分:1)

自定义代码与通用解决方案相当于高性能与易用性。

XPath(以及XLSTJDOM等)将构建类似DOM的模型,并对其进行迭代。这将需要更多的RAM和CPU。 XPath很简单,但对于大文件来说可能非常慢。此外,它要求您手头有完整的文件。用于小文件。

另一方面,

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