- Apache Xerces 教程
- Xerces 主页
- XML 概述
- Xerces 环境设置
- XML 解析器
- Xerces DOM 解析器
- Xerces DOM 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Xerces SAX 解析器
- Xerces SAX 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Xerces StAX 解析器
- Xerces StAX 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Xerces 有用资源
- Xerces - 快速指南
- Xerces - 有用资源
- Xerces - 讨论
StAX 解析器 - 概述
StAX 是一个基于 JAVA 的 API,用于像 SAX 解析器一样解析 XML 文档。但是,这两个 API 之间有两个主要区别:
StAX 是一个拉取式 API,而 SAX 是一个推送式 API。这意味着在 StAX 解析器的情况下,客户端应用程序需要请求 StAX 解析器在需要时从 XML 获取信息,但在 SAX 解析器的情况下,客户端应用程序需要在 SAX 解析器通知客户端应用程序有信息可用时获取信息。
StAX API 可以读取和写入 XML 文档。使用 SAX API,只能读取 xml。
以下是 StAX API 的特性:
从上到下读取 XML 文档,识别构成格式良好的 XML 文档的标记。
标记按其在文档中出现的顺序进行处理。
向应用程序报告解析器遇到的标记的性质。
应用程序提供一个“事件”读取器,它充当迭代器并迭代事件以获取所需信息。另一个可用的读取器是充当 XML 节点指针的“游标”读取器。
识别事件后,可以从事件对象中检索 xml 元素并进一步处理。
何时使用?
你应该在以下情况下使用 StAX 解析器:
你可以从上到下线性处理 XML 文档。
文档嵌套不深。
你正在处理一个非常大的 XML 文档,其 DOM 树将消耗过多的内存。典型的 DOM 实现使用十个字节的内存来表示一个字节的 XML。
要解决的问题只涉及 XML 文档的一部分。
数据在解析器看到后即可获得,因此 StAX 非常适合通过流到达的 XML 文档。
SAX 的缺点
由于 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) - 将属性写入元素。