Java Xml 简明教程

Java SAX Parser - Overview

Java SAX(XML 的简单 API)是一种基于事件的解析器,用于解析 XML 文档。与 DOM 解析器不同,SAX 解析器不会创建解析树。它不会将整个文档加载到内存中,而是会通读 XML 文档,并在遇到元素、属性、文本内容和以事件形式的其他数据项时通知客户端程序。这些事件由事件处理程序中实现的方法处理。

What does SAX Parser do?

SAX 解析器向客户端程序执行以下操作 -

  1. 从上至下读取 XML 文档并识别令牌。

  2. 按其出现的顺序处理令牌。

  3. 向解析器报告令牌的性质。

  4. 根据识别的令牌在事件处理程序中调用回调方法。

When to Use Java SAX Parser?

以下情况应使用 SAX 解析器 -

  1. 希望从上至下线性处理 XML 文档。

  2. 文档没有深度嵌套。

  3. 你的 XML 文档非常大。

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

  5. 你有流数据(数据在解析器看到后会立即提供)。

Advantages

以下是 Java SAX 解析器的一些优点 -

  1. Consumes less memory

  2. 它比 DOM 解析器快。因为我们无需等待整个文档加载到内存中。

  3. 你仍然可以处理大于系统内存的 XML 文档。

Disadvantages

以下是一些 Java SAX 解析器缺点 -

  1. 不能随机访问 XML 文档。

  2. 可能不能创建 XML 文档。

  3. 如果你想跟踪解析器看到的数据或更改项目的顺序,则必须自己编写代码并存储数据。

ContentHandler Interface

ContentHandler 接口是 org.xml.sax 包中的主接口。大多数应用程序都实现此接口来执行基本的解析事件。这些事件包括文档的开始和结束、元素的开始和结束,以及字符数据。我们必须实现并注册一个处理程序来执行 XML 文档中的任何任务。

有一些内置类,即 DefaultHandler 、DefaultHandler2、ValidatorHandler,用于实现 ContentHandler 接口。我们可以使用这些类来实现我们自定义的处理程序。

此接口指定 SAX 解析器用来通知应用程序程序它看到 XML 文档组件的回调方法。以下是 ContentHandler 接口的方法 -

Attributes Interface

Attributes 接口位于 org.xml.sax 包中。此接口用于 Element 中指定的 XML 属性列表。以下是 Attributes 接口中使用最多的方法 -