我的应用程序将解析通过HTTP接收的XML。据我所知,解析XML有三种主要方式:
据说SAX是最快的,而DOM不适合大型XML文档。但就解析而言,什么是大型XML文档?对于以下内容,推荐的解析器是什么?
答案 0 :(得分:7)
据我所知,解析XML有三种主要方式:
- SAX
- DOM
- XmlPullParser
错误!这些都不是最好的方式。你真正想要的是使用Simple XML Framework进行基于注释的解析。要了解为什么遵循这个逻辑:
为了帮助您完成这项工作,我将point you to my own blog post解释如何在Android上使用简单库。
除非你有一个100MB的XML文件,否则Simple将足够快。对我来说,我在所有Android XML项目中使用它。
N.B。我应该指出,如果您要求用户在Android上下载超过1MB的XML文件,那么您可能需要重新考虑您的策略。你可能做错了。
答案 1 :(得分:4)
我担心这是一个例子,取决于 ......
根据经验,使用Java从XML文档构建DOM树将占用该文档本机大小的4到10倍(假设使用西方文本和UTF-8编码),具体取决于底层实现。因此,如果速度和内存使用并不重要,那么对于你提到的小文档来说,这不会是一个问题。
DOM通常被认为是使用XML的一种令人不愉快的方式。对于背景,您可能需要查看Elliotte Rusty Harold的演示文稿:What's Wrong with XML APIs (and how to fix them)。
然而,使用SAX可能会更加繁琐,因为文档一次只能处理一个项目。然而,SAX速度快,占用的内存非常少。如果你能找到你喜欢的拉解析器那么一定要试试。
另一种方法(不是超级高效,但干净且可维护)是构建XML的内存树(比方说使用DOM),然后使用XPath表达式选择您感兴趣的信息。