Xerces StAX Parser(Xerces StAX Parser)

优质
小牛编辑
134浏览
2023-12-01

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元素,并可以进一步处理。

什么时候用?

你应该使用StAX解析器 -

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

  • 该文档没有深层嵌套。

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

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

  • 解析器一看到数据就会立即可用,因此StAX适用于通过流到达的XML文档。

SAX的缺点

  • 我们没有随机访问XML文档,因为它是以仅向前的方式处理的。

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

XMLEventReader类

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

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

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

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

XMLEventWriter类

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

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

XMLStreamReader类

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

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

  • boolean hasNext() - 用于检查是否存在其他事件

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

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

XMLStreamWriter类

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

  • writeStartElement(String localName) - 添加给定名称的start元素。

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

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