之间的区别:SAX解析器,XPath的,DOM,XMLPullParser

问题描述:

我想知道上述四种类型(SAXPaser,XPath的,DOM,XMLPullParse),我们时应使用每一个之间的差异。之间的区别:SAX解析器,XPath的,DOM,XMLPullParser

+0

看到我的apdated答案!!希望这会帮助你 –

SAX解析是实现比DOM,请参阅以下这两者之间的区别最好的一个:

DOM

节点都是树结构的形式 内存:它占用更多的内存,DOM只有在以存储为对象编程 容易运行 较慢的小型XML文档 的情况较受欢迎的实施 易于导航和使用。

SAX事件 的

序列它不使用首选大文档的内存。由于上面提到的点,在运行时更快。 对象将被创建。 需要编写代码创建对象 在SAX向后导航,因为它如果你有非常大的文件,那么你应该使用SAX解析器,因为它会触发事件和释放他们按顺序处理文档

所以是不可能的,没有什么是存储在内存中,并且使用SAX解析器,您无法以随机方式访问元素,因此无法返回! ,但Dom允许您访问xml文件的任何部分,因为它将整个文件/文档保存在内存中。

看到这个article,你可以通过阅读摘要得到你想要的。

还检查此link,以查看不同的XML解析器的性能

enter image description here

请检查下面的链接...

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文档。两者都有优点和缺点,并且可以根据不同的情况我们的编程中使用

SAX:

  1. 解析由节点节点
  2. 犯规存储XML在内存
  3. 我们不能插入或删除节点
  4. 由上至下穿越

DOM

  1. 存储整个XML文档到内存中处理
  2. 之前占用更多的内存
  3. 我们可以插入或删除节点
  4. 导线在任何方向。

如果我们需要找到一个节点并且不需要插入或删除,我们可以使用SAX本身,否则DOM提供了更多的内存。

DOM

节点处于树结构的形式 内存:它占用更多的存储器,DOM仅优先停留在小XML文档的情况下...将整个XML文档存储在内存中以供处理 在运行时较慢 作为对象存储 以编程方式容易实现nt 易于导航和使用,可以在任何方向上穿行。 我们可以插入或删除,更改节点。

SAX:当你想访问XML(不改变XML)事件 它不会在内存中的XML处理 更快之前使用首选大documents.Doesn't存储中的任何内存

顺序使用在运行时,因为上面提到的一点。 对象将被创建。 需要编写代码创建对象 在SAX向后导航是不可能的,因为它按顺序处理文件,从上到下穿越 我们不能插入或删除节点

XPATH:XPath是有用的,当你只需要从XML文档几个值的,你知道在哪里可以找到他们(你知道data./root/item/challange/text的路径)

XMLPullParser: 速度快,可以与DOM

更少的内存

来源: http://www.time2ask.com/ http://www.time2ask.com/Android/The-difference-among-SAX-ParserXPathDOMXMLPullParser/_2361836