Xerces 简明教程
StAX Parser - Overview
StAX 是一个基于 JAVA 的 API,它以与 SAX 解析器类似的方式来解析 XML 文档。但这两个 API 之间有两个主要的差异点 −
-
StAX 是一种 PULL API,而 SAX 是一种 PUSH API。这意味着对于 StAX 解析器,客户端应用程序需要在需要时要求 StAX 解析器从 XML 中获取信息,而对于 SAX 解析器,当 SAX 解析器通知客户端应用程序信息可用时,则要求客户端应用程序获取信息。
-
StAX API 可以对 XML 文档进行读取和写入。使用 SAX API,只能读取 xml。
以下是 StAX API 的特性:
-
从上到下读取 XML 文档,识别构成良好形成的 XML 文档的标记。
-
标记按其出现在文档中的顺序进行处理。
-
向应用程序报告解析器遇到的令牌的性质,因为它们会发生。
-
应用程序提供一个充当迭代器的“事件”读取器,该读取器在事件上进行迭代以获取所需信息。另一个可用的读取器是充当指向 xml 节点的指针的“游标”读取器。
-
随着事件的标识,可以从事件对象中检索 xml 元素,并可以进一步处理。
When to use?
您应该在以下情况下使用 StAX 解析器:
-
你可以从上到下线性处理 XML 文档。
-
文档没有深度嵌套。
-
你正在处理一个非常大的 XML 文档,其 DOM 树会占用过多的内存。典型的 DOM 实现使用 10 个字节的内存来表示 1 字节的 XML。
-
需要解决的问题仅涉及 XML 文档的一部分。
-
解析器一看到数据便立即能用,因此 StAX 非常适用于流式传输的 XML 文档。
XMLEventReader Class
该类提供事件的迭代器,可用在解析 XML 文档时用于迭代遇到的事件
-
StartElement asStartElement() − 用于检索元素的值和属性。
-
EndElement asEndElement() − 在元素结尾处调用。
-
Characters asCharacters() − 可用于获取字符,如 CDATA、空白等。