XML SAX解析器之间的差异,Pull解析器& android中的DOM Parser

时间:2012-07-02 16:07:49

标签: android saxparser xmlpullparser domparser

我想知道XML SAX解析器,Pull解析器和放大器之间的区别是什么? Android中的DOM解析器。在哪种情况下,哪一个在性能和实施方面更好?

感谢名单。 Khobaib。

3 个答案:

答案 0 :(得分:31)

Dom Parser 它使用 基于对象的 方法。即,它首先将整个XML加载到内存中,将XML节点转换为对象,然后开始解析它们。所以,它相当慢。

SAX和PULL Parser 他们使用 基于事件的 方法。两者在内存和性能方面几乎相同。但是,如下所述,何时使用它们的区别很少。

Dom Parser 在解析之前需要 验证 整个XML时使用它。 当XML太大并且验证可能受到损害时,切勿使用它。 一旦开始解析,它就会从起始节点解析到结束节点。没有办法只解析特定的节点。

SAX - 当您要解析整个XML时使用它。 一旦开始解析,它就会从起始节点解析到结束节点。没有办法只解析特定的节点。

PULL - 当您不想解析整个XML时使用它。它比SAX更容易实现,因为您不必维护解析器的状态。您只能提取您感兴趣的特定节点。

我的建议是 - 需要 验证 - 转到DOM ,文件大小 或者您不是有兴趣解析整个XML-Go for PULL ,文件大小是 ,或者你需要解析< strong> 整个XML 文件 - 转到 SAX

答案 1 :(得分:12)

Sax Parser:简单的XML API            使用自上而下遍历解析节点到节点,解析而不存储xml,            与Dom相比更快            允许操作插入或删除等节点。        需要SAXParserFactory

Dom Parser:文档对象模型              在处理之前将整个xml存储在内存中,以任何方向遍历,              不允许操作插入或删除节点。          需要DocumentBuilderFactory

拉解析器:它提供了上述两种控制和速度。需要pullParserFactory

答案 2 :(得分:0)

就性能而言,SAX通常会使用更少的内存。而且你只处理你想要的事件,例如startElement(),startDocument(),endElement()等等,因此您只能保存您想要的特定数据。 DOM会将整个XML文件加载到内存中。