当前位置: 首页 > 教程 > Java XML >

Java StAX解析器 介绍

精华
小牛编辑
136浏览
2023-03-14

什么是StAX解析器

StAX 是一种基于 Java 的 API,用于以与 SAX 解析器类似的方式解析 XML 文档。但是这两个 API 之间有两个主要区别 :

  • StAX 是一个 PULL API,而 SAX 是一个 PUSH API。这意味着在 StAX 解析器的情况下,客户端应用程序需要要求 StAX 解析器在需要时从 XML 获取信息。但是对于 SAX 解析器,当 SAX 解析器通知客户端应用程序信息可用时,客户端应用程序需要获取信息。

  • StAX API 可以读取和写入 XML 文档。使用 SAX API,只能读取 XML 文件。

StAX 解析器的环境设置

为了使用 StAX 解析器,您的应用程序的类路径中应该有 stax.jar。

以下是 StAX API 的功能 :

  • 从上到下读取 XML 文档,识别构成格式良好的 XML 文档的标记。

  • 令牌的处理顺序与它们在文档中出现的顺序相同。

  • 向应用程序报告解析器遇到的标记。

  • 应用程序提供了一个“事件”阅读器,它充当迭代器并迭代事件以获取所需信息。另一个可用的读取器是“cursor”,它充当指向 XML 节点的指针。

  • 识别事件后,可以从事件对象中检索 XML 元素并进一步处理。

StAX 解析器的应用场景

您应该在以下情况下使用 StAX 解析器 :

  • 您希望从上到下以线性方式处理 XML 文档。

  • 该文档没有深度嵌套。

  • 您正在处理一个非常大的 XML 文档,它的 DOM 树会消耗太多内存。典型的 DOM 实现使用十个字节的内存来表示一个字节的 XML。

  • 要解决的问题只涉及到 XML 文档的一部分。

  • 解析器一解析到数据就可用,因此 StAX 非常适用于通过流方式读取的 XML 文档。

StAX 解析器 的缺点

  • 不能随机访问 XML 文档,因为它是以只进的方式处理的。

  • 如果您需要跟踪解析器看到的数据或解析器更改项目顺序的位置,那么您必须自己编写代码并存储数据。

XMLEventReader 类

此类提供事件迭代器,可用于在解析 XML 文档时对发生的事件进行迭代。

  • StartElement asStartElement() : 用于检索元素的值和属性。

  • EndElement asEndElement() : 在元素的末尾调用。

  • Characters asCharacters() :可用于获取 CDATA、空格等字符。

XMLEventWriter 类

此接口指定创建事件的方法。

  • add(Event event) : 将包含元素的事件添加到 XML。

XMLStreamReader 类

此类提供事件迭代器,可用于在解析 XML 文档时对发生的事件进行迭代。

  • int next() : 用于检索下一个事件。

  • boolean hasNext() : 用于检查进一步的事件是否存在。

  • String getText() : 用于获取元素的文本。

  • String getLocalName() : 用于获取元素的名称。

XMLStreamWriter 类

此接口指定创建事件的方法。

  • writeStartElement(String localName) : 添加给定名称的开始元素。

  • writeEndElement(String localName) : 添加给定名称的结束元素。

  • writeAttribute(String localName, String value) : 将属性写入元素。