XML Pull Parser和SAX Parser有什么区别

时间:2014-10-30 11:08:46

标签: java garbage-collection saxparser xmlpullparser

我正在寻找SAX和Pull Parser之间的主要区别。我知道SAX解析器适合处理大型XML文件,因为它不存储XML并且只在一个方向上遍历。与DOM相比。但我无法找到SAX和PULL之间的主要区别。 请建议我任何链接

2 个答案:

答案 0 :(得分:2)

区别在于您对XML处理器进行编码的方式。对于SAX解析器,您使用事件驱动模型,其中您提供了一个类,该类具有响应在读取XML时发生的事件的方法(Oracle tutorial here)。

对于pull解析器,您可以更好地控制何时读取XML的位,并且可以将解析器句柄传递给各个类来处理文档的不同位(Oracle tutorial here)。

可以找到Oracle对技术的比较here

答案 1 :(得分:1)

Parser 调用您的处理程序时,即Parser将事件推送到您的处理程序中,它被称为 Parser的Push Model ,例如。 SAX Parser

  

SAX Parser - >处理

使用推送模型,您无法控制解析迭代文件的方式和时间。

Handler 类调用解析器或处理程序类控制解析器何时移动下一个事件时,称为 Pull Parser 。这里Handler将XML事件“拉出”解析器。例如。 StAX

  

处理程序 - > StAX Parser

有关详情,请参阅http://tutorials.jenkov.com/java-xml/sax-vs-stax.html