Java Xml 简明教程
Java SAX Parser - Overview
Java SAX(XML 的简单 API)是一种基于事件的解析器,用于解析 XML 文档。与 DOM 解析器不同,SAX 解析器不会创建解析树。它不会将整个文档加载到内存中,而是会通读 XML 文档,并在遇到元素、属性、文本内容和以事件形式的其他数据项时通知客户端程序。这些事件由事件处理程序中实现的方法处理。
What does SAX Parser do?
SAX 解析器向客户端程序执行以下操作 -
-
从上至下读取 XML 文档并识别令牌。
-
按其出现的顺序处理令牌。
-
向解析器报告令牌的性质。
-
根据识别的令牌在事件处理程序中调用回调方法。
When to Use Java SAX Parser?
以下情况应使用 SAX 解析器 -
-
希望从上至下线性处理 XML 文档。
-
文档没有深度嵌套。
-
你的 XML 文档非常大。
-
要解决的问题仅涉及 XML 文档的一部分。
-
你有流数据(数据在解析器看到后会立即提供)。
Advantages
以下是 Java SAX 解析器的一些优点 -
-
Consumes less memory
-
它比 DOM 解析器快。因为我们无需等待整个文档加载到内存中。
-
你仍然可以处理大于系统内存的 XML 文档。
Disadvantages
以下是一些 Java SAX 解析器缺点 -
-
不能随机访问 XML 文档。
-
可能不能创建 XML 文档。
-
如果你想跟踪解析器看到的数据或更改项目的顺序,则必须自己编写代码并存储数据。
ContentHandler Interface
ContentHandler 接口是 org.xml.sax 包中的主接口。大多数应用程序都实现此接口来执行基本的解析事件。这些事件包括文档的开始和结束、元素的开始和结束,以及字符数据。我们必须实现并注册一个处理程序来执行 XML 文档中的任何任务。
有一些内置类,即 DefaultHandler 、DefaultHandler2、ValidatorHandler,用于实现 ContentHandler 接口。我们可以使用这些类来实现我们自定义的处理程序。
此接口指定 SAX 解析器用来通知应用程序程序它看到 XML 文档组件的回调方法。以下是 ContentHandler 接口的方法 -