课程:XML 的简单 API

原文: https://docs.oracle.com/javase/tutorial/jaxp/sax/index.html

本课程重点介绍 Simple API for XML(SAX),这是一种用于访问 XML 文档的事件驱动的串行访问机制。这个协议经常被需要传输和接收 XML 文档的 servlet 和面向网络的程序使用,因为它是目前可用于处理 XML 文档的最快且内存最少的机制,而不是用于 XML 的 Streaming API( StAX 的)。


:简而言之,SAX 面向状态独立处理,其中元素的处理不依赖于之前的元素。另一方面,StAX 面向状态依赖处理。有关更详细的比较,请参阅何时使用 SAX


设置程序以使用 SAX 需要比设置使用文档对象模型(DOM)更多的工作。 SAX 是一个事件驱动的模型(您提供了回调方法,解析器在读取 XML 数据时调用它们),这使得可视化变得更加困难。最后,除了可以备份串行数据流或重新排列从该流中读取的字符之外,您不能“备份”到文档的早期部分或重新排列它。

出于这些原因,编写面向用户的应用程序显示 XML 文档并可能修改它的开发人员将希望使用文档对象模型中描述的 DOM 机制。

但是,即使您计划专门构建 DOM 应用程序,也有几个重要的原因可以让您熟悉 SAX 模型:

  • 相同错误处理:SAX 和 DOM API 生成相同类型的异常,因此错误处理代码几乎完全相同。

  • 处理验证错误:默认情况下,规范要求忽略验证错误。如果您想在发生验证错误时抛出异常(并且您可能会这样做),那么您需要了解 SAX 错误处理的工作原理。

  • 转换现有数据:正如您在文档对象模型中所看到的,您可以使用一种机制将现有数据集转换为 XML。但是,利用该机制需要了解 SAX 模型。