android中的XML SAX解析器,Pull解析器和DOM解析器之间的区别

Kho*_*aib 15 android saxparser xmlpullparser domparser

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

感谢名单.Khobaib.

Shi*_*rur 33

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

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

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

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

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

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


Kum*_*tra 14

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

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

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

  • 与Sax和DOM不一样吗?Dom确实允许插入和删除,而Sax只是一个解析器?参考:http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html (2认同)