【问题标题】:What is the difference between XML Pull Parser and SAX ParserXML Pull Parser 和 SAX Parser 有什么区别
【发布时间】:2014-12-26 09:36:29
【问题描述】:

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

【问题讨论】:

  • SAX 是一个拉式解析器,但还有其他的,例如DOM。
  • SAX 是一个推式解析器 - StAX 是一个拉式解析器(参见下面的比较链接)

标签: java garbage-collection saxparser xmlpullparser


【解决方案1】:

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

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

Oracle 对这些技术的比较可以在here 找到。

【讨论】:

    【解决方案2】:

    当 Parser 调用您的处理程序时,即 Parser 将事件推送到您的处理程序中,它被称为 Parser 的推送模型,例如。 SAX 解析器

    SAX 解析器 --> 处理程序

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

    当Handler类调用解析器或者当handler类控制解析器何时移动到下一个事件时称为Pull Parser。这里 Handler 从解析器中“拉”出 XML 事件。例如。斯塔克斯

    处理程序 --> StAX 解析器

    更多信息,请阅读http://tutorials.jenkov.com/java-xml/sax-vs-stax.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2021-07-16
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多