Java StAX解析器 - Java XML教程

StAX是一个基于JAVA API用于解析XML文档,类似SAX解析器的方式。但两种API之间有两个区别

  • StAX是PULL API,其中作为SAX是PUSH API。这意味着如果StAX解析器,客户端应用程序需要询问StAX解析器从XML获取信息它所需要的,但如果是SAX解析器,客户端应用程序需要获取信息时,SAX解析器会通知客户端应用程序的信息是可用的。

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

环境设置

为了使用StAX的解析器,应该准备好stax.jar在应用程序的类路径中。下载 stax-1.2.0.jar.

以下是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) - 添加包含元素XML事件。

XMLStreamReader Class

因为在解析XML文档时该类提供可用于迭代事件事件迭代器

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

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

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

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

XMLStreamWriter类

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

  • writeStartElement(String localName) - 加入定名称开始元素。

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

  • writeAttribute(String localName, String value) - 编写属性到元素。