# 包概述

> 原文： [https://docs.oracle.com/javase/tutorial/jaxp/intro/package.html](https://docs.oracle.com/javase/tutorial/jaxp/intro/package.html)

SAX 和 DOM API 分别由 XML-DEV 组和 W3C 定义。定义这些 API 的库如下：

*   `javax.xml.parsers` ：JAXP API，为不同供应商的 SAX 和 DOM 解析器提供通用接口。

*   `org.w3c.dom` ：定义 `Document` 类（DOM）以及 DOM 的所有组件的类。

*   `org.xml.sax` ：定义基本的 SAX API。

*   `javax.xml.transform` ：定义允许您将 XML 转换为其他形式的 XSLT API。

*   `javax.xml.stream` ：提供特定于 StAX 的转换 API。

Simple API for XML（SAX）是事件驱动的串行访问机制，它执行逐个元素的处理。此级别的 API 将 XML 读取和写入数据存储库或 Web。对于服务器端和高性能应用程序，您需要完全理解此级别。但是对于许多应用来说，最小的理解就足够了。

DOM API 通常是一个更容易使用的 API。它提供了熟悉的对象树结构。您可以使用 DOM API 来操作它封装的应用程序对象的层次结构。 DOM API 是交互式应用程序的理想选择，因为整个对象模型存在于内存中，用户可以在其中访问和操作它。

另一方面，构造 DOM 需要读取整个 XML 结构并将对象树保存在内存中，因此它更加占用 CPU 和内存。因此，SAX API 往往是服务器端应用程序和不需要内存中数据表示的数据过滤器的首选。

`javax.xml.transform` 中定义的 XSLT API 允许您将 XML 数据写入文件或将其转换为其他形式。如本教程的 XSLT 部分所示，您甚至可以将它与 SAX API 结合使用，将旧数据转换为 XML。

最后， `javax.xml.stream` 中定义的 StAX API 提供了基于 Java 技术的流式，事件驱动的拉解析 API，用于读取和编写 XML 文档。 StAX 提供比 SAX 更简单的编程模型，并且比 DOM 更有效的内存管理。