我想知道上述四种类型(SAXPaser、XPath、DOM、XMLPullParse)之间的区别以及我们应该在什么时候使用它们。
3 回答
SAX Parsing 是比 DOM 实现的最好的一种,请参阅以下两者之间的区别:
DOM
节点采用树结构内存的形式:它占用更多内存,仅在小型 XML 文档的情况下首选 DOM 运行时速度较慢 存储为对象 以编程方式易于实现 易于导航和使用。
萨克斯
事件序列 它不使用大型文档首选的任何内存。由于上述几点,运行时更快。对象将被创建。需要编写用于创建对象的代码在 SAX 中向后导航是不可能的,因为它顺序处理文档
因此,如果您有非常大的文件,那么您应该使用 SAX 解析器,因为它会触发事件并释放它们,没有任何内容存储在内存中,并且使用 SAX 解析器您不能以随机方式访问元素,没有回头路!,但 Dom 允许您访问 xml 文件的任何部分,因为它将整个文件/文档保存在内存中。
看到这篇文章,你可以通过阅读摘要得到你想要的。
还检查此链接以查看不同 xml 解析器的性能
请检查以下链接...
http://steveliles.github.com/comparing_methods_of_xml_parsing_in_android.html
http://xjaphx.wordpress.com/2011/11/01/android-xml-adventure-compare-xml-parsers/
http://www.ibm.com/developerworks/opensource/library/x-android/index.html
http://www.developer.com/ws/android/development-tools/Android-XML-Parser-Performance-3824221-2.htm
http://www.geekinterview.com/question_details/12797
(根据上述文章)
SAX 和 DOM 都用于解析 XML 文档。两者各有优缺点,可以根据情况用在我们的编程中
萨克斯:
- 逐个节点解析
- 不将 XML 存储在内存中
- 我们无法插入或删除节点
- 从上到下遍历
DOM
- 在处理之前将整个 XML 文档存储到内存中
- 占用更多内存
- 我们可以插入或删除节点
- 向任何方向移动。
如果我们需要找到一个节点并且不需要插入或删除,我们可以使用 SAX 本身,否则 DOM 提供我们有更多的内存。
DOM
节点采用树结构内存的形式:它占用更多内存,仅在小型 XML 文档的情况下优先使用 DOM。将整个 XML 文档存储到内存中,以便在运行时处理速度较慢存储为对象以编程方式易于实现导航和使用,可以在任何方向遍历。我们可以插入或删除,改变节点。
SAX :当您想要访问 XML 时使用(而不是更改 XML)
事件序列它不使用大型文档首选的任何内存。由于上述几点,在运行时处理更快之前不将 XML 存储在内存中。对象将被创建。需要编写创建对象的代码在SAX中向后导航是不可能的,因为它顺序处理文档,从上到下遍历我们不能插入或删除节点
XPATH:当您只需要 XML 文档中的几个值并且您知道在哪里可以找到它们时,Xpath 很有用(您知道数据的路径。/root/item/challange/text)
XMLPullParser:速度快,使用 DOM 需要更少的内存
来源: http ://www.time2ask.com/ http://www.time2ask.com/Android/The-difference-among-SAX-ParserXPathDOMXMLPullParser/_2361836