XML Pull Parser 和 SAX Parser 有啥区别
Posted
技术标签:
【中文标题】XML Pull Parser 和 SAX Parser 有啥区别【英文标题】: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 是一个拉式解析器(参见下面的比较链接) 【参考方案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
【讨论】:
以上是关于XML Pull Parser 和 SAX Parser 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
使用 SAX Parser 进行 Android XML 解析