# 文档对象模型 API

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

[下图](#gceza)显示了正在运行的 DOM API。

图 DOM API

![DOM APIs](img/29f82be8c6756c2aeaaa366112831581.jpg)

您使用 `javax.xml.parsers.DocumentBuilderFactory` 类来获取 `DocumentBuilder` 实例，并使用该实例生成符合 DOM 的 `Document` 对象规格。实际上，您获得的构建器由系统属性 `javax.xml.parsers.DocumentBuilderFactory` 确定，该属性选择用于生成构建器的工厂实现。 （可以从命令行覆盖平台的默认值。）

您还可以使用 `DocumentBuilder` `newDocument（）`方法创建一个空`文档`，实现 `org.w3c.dom.Document` 界面。或者，您可以使用构建器的解析方法之一从现有 XML 数据创建 `Document` 。结果是一个 DOM 树，如上面的[图](#gceza)所示。

* * *

**注 -** 尽管它们被称为对象，但 DOM 树中的条目实际上是相当低级的数据结构。例如，考虑这种结构：`&lt; color&gt; blue&lt; / color&gt;` 。颜色标签有一个元素节点，在其下面有一个包含数据的文本节点，蓝色！这个问题将在本教程的 DOM 课程中详细探讨，但是期望对象的开发人员通常会惊讶地发现在元素节点上调用 `getNodeValue（）`什么都不返回。有关真正面向对象的树，请参阅 [http://www.jdom.org](http://www.jdom.org) 上的 JDOM API。

* * *

## DOM 包

文档对象模型实现在以下[表](#gcezo)中列出的包中定义。

表 DOM 包

<colgroup><col width="50%"> <col width="50%"></colgroup>
| 

包

 | 

描述

 |
| :-- | :-- |
| `org.w3c.dom` | 根据 W3C 的规定，为 XML（以及可选的 HTML）文档定义 DOM 编程接口。 |
| `javax.xml.parsers` | 定义 `DocumentBuilderFactory` 类和 `DocumentBuilder` 类，它返回一个实现 W3C Document 接口的对象。用于创建构建器的工厂由 `javax.xml.parsers` 系统属性确定，该属性可以从命令行设置，也可以在调用新的 Instance 方法时覆盖。该软件包还定义了 `ParserConfigurationException` 类来报告错误。 |