【问题标题】:The difference among : SAX Parser,XPath,DOM,XMLPullParser区别:SAX Parser,XPath,DOM,XMLPullParser
【发布时间】:2012-06-01 16:20:37
【问题描述】:

我想知道上述四种类型(SAXPaser、XPath、DOM、XMLPullParse)之间的区别以及我们应该在什么时候使用它们。

【问题讨论】:

  • 查看我的更新答案!!希望对您有所帮助

标签: android xml parsing


【解决方案1】:

SAX Parsing 是比 DOM 实现最好的一种,请参阅以下两者之间的区别:

DOM

节点采用树形结构的形式 内存:占用较多的内存,仅在 XML 文档较小的情况下优先使用 DOM 运行时较慢 存储为对象 以编程方式易于实现 易于导航和使用。

萨克斯

事件顺序 它不使用大型文档首选的任何内存。 由于上述几点,运行时更快。 对象将被创建。 需要编写创建对象的代码 在 SAX 中,向后导航是不可能的,因为它按顺序处理文档

因此,如果您有非常大的文件,那么您应该使用 SAX 解析器,因为它会触发事件并释放它们,没有任何内容存储在内存中,并且使用 SAX 解析器您不能以随机方式访问元素,没有回头路! ,但 Dom 允许您访问 xml 文件的任何部分,因为它将整个文件/文档保存在内存中。

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

还可以查看link 以查看不同 xml 解析器的性能

【讨论】:

    【解决方案2】:

    请检查以下链接...

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

    萨克斯:

    1. 逐个节点解析
    2. 不在内存中存储 XML
    3. 我们无法插入或删除节点
    4. 从上到下遍历

    DOM

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

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

    【讨论】:

      【解决方案3】:

      DOM

      节点采用树形结构的形式 内存:占用内存较多,仅在XML文档较小的情况下优先使用DOM。将整个XML文档存储到内存中进行处理 运行时较慢 存储为对象 以编程方式易于实现 易于导航和使用,可以向任何方向移动。 我们可以插入或删除,改变节点。

      SAX : 当你想访问 XML 时使用(而不是改变 XML)

      事件顺序 它不使用大型文档首选的任何内存。在处理之前不将 XML 存储在内存中 由于上述几点,运行时更快。 对象将被创建。 需要编写创建对象的代码 在 SAX 中向后导航是不可能的,因为它顺序处理文档,从上到下遍历 我们无法插入或删除节点

      XPATH:当您只需要 XML 文档中的几个值并且您知道在哪里可以找到它们(您知道数据的路径。/root/item/challange/text)时,Xpath 很有用

      XMLPullParser: 使用 DOM 速度快并且需要更少的内存

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

      【讨论】:

        猜你喜欢
        • 2014-12-26
        • 1970-01-01
        • 2013-05-16
        • 2023-03-21
        • 2012-07-30
        • 2012-02-12
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多