有一个远程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);
另一种方法是使用一个拉解析器,这将是一个更多的代码我想做一个简单的工作来提取节点集。我想知道哪种方法在内存和速度方面表现更好?
答案 0 :(得分:1)
我在Best practices for parsing XML
找到了一个很好的答案您还可以使用XmlPullParser来解析xml。但我建议如果可能的话,使用json代替XML,这会减少你的记忆,Google会在GSON中提供最好的包装机制。
链接。
答案 1 :(得分:1)
自定义代码与通用解决方案相当于高性能与易用性。
XPath
(以及XLST
和JDOM
等)将构建类似DOM的模型,并对其进行迭代。这将需要更多的RAM和CPU。 XPath很简单,但对于大文件来说可能非常慢。此外,它要求您手头有完整的文件。用于小文件。
PullParser
就像只在您感兴趣的地方阅读文件,跳过其余部分。此外,一次只有一个节点加载到RAM中。输入文件的大小,或完全可用或通过介质流式传输没有限制。将其用于大型或流式文件。