繁体   English   中英

Android:DOM vs SAX vs XMLPullParser解析?

[英]Android: DOM vs SAX vs XMLPullParser parsing?

我正在使用SAX Parser解析XML Document。

我想知道使用DOMSAX ParserXMLPullParser哪个更好更快。

这取决于你在做什么,如果你有非常大的文件,那么你应该使用SAX解析器,因为它会触发事件并释放它们,没有任何东西存储在内存中,并且使用SAX解析器你不能随机访问元素那里是不会回来的! 但是Dom允许您访问xml文件的任何部分,因为它将整个文件/文档保存在内存中。 希望这个回答你的问题。

如果你想知道哪个最快的解析器Xerces将是你找到的最快的,SAX解析器应该给你比Dom更多的性能

可以对不同类型的解析器进行分类的一个方面是它们是否需要预先将整个XML文档加载到存储器中。 基于文档对象模型(DOM)的解析器可以做到:它们将XML文档解析为树结构,然后可以在内存中遍历该结构以读取其内容。 这允许您以任意顺序遍历文档,并产生一些可以在DOM之上打开的有用API,例如XPath,一种专门用于从树中提取信息的路径查询语言。 单独使用DOM并没有太大的好处,因为它的API很笨重,即使你不需要,也总是将所有东西都读入内存是很昂贵的。 因此,在大多数情况下,DOM解析器不是在Android上解析XML的最佳选择。

有一类解析器不需要预先加载文档。 这些解析器是基于流的 ,这意味着它们处理XML文档,同时仍然从数据源(Web或磁盘)读取它。 这意味着您没有像DOM一样随机访问XML树,因为没有维护文档的内部表示。 流解析器可以进一步彼此区分。 有一些推送解析器 ,在流式传输文档时,会在遇到新元素时回调您的应用程序。 SAX解析器属于这个类。 然后有拉解析器,更像是迭代器或游标:这里客户端必须明确要求检索下一个元素。

资料来源:Android实践。

SAX XML Parser已经可以在Android SDK中使用。

http://developer.android.com/reference/org/xml/sax/XMLReader.html

所以它很容易访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM