# 课程：XML 的简单 API

> 原文： [https://docs.oracle.com/javase/tutorial/jaxp/sax/index.html](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](when.html) 。

* * *

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

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

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

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

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

*   **转换现有数据**：正如您在[文档对象模型](../dom/index.html)中所看到的，您可以使用一种机制将现有数据集转换为 XML。但是，利用该机制需要了解 SAX 模型。