Java DOM

17 Mar 2025 | 6 分钟阅读

文档对象模型(Document Object Model,DOM)是万维网联盟(W3C)的一种规范。它定义了一个接口,使程序能够访问和修改 XML 文档的样式、布局和内容。支持 DOM 的 XML 解析器实现了这个接口。从下面的图片中可以看到,如下所示。

Java 中的解析器

XML 解析器有两种,分别是 XML 的简单 API (Simple API for XML) 和文档对象模型 (Document Object Model)。

  1. DOM(文档对象模型)解析器
  2. SAX(XML 的简单 API)解析器

什么是 DOM(文档对象模型)解析器?

DOM 代表文档对象模型。当一个对象包含有关 XML 文档的某些信息时,称为 DOM 解析器。它表现为一个树形结构。DOM 解析器实现了 DOM API,非常简单易用。它将 XML 文档解析成树形结构,其中每个节点代表树枝,在内存中创建 XML 文档的表示,然后进行解析。这需要更多的内存。

DOM 解析器的特点

  1. DOM 解析器可以创建内部结构。
  2. 由于这些内部结构,用户可以获取有关原始 XML 文档的信息。

DOM 解析器的优点

  1. DOM API 易于使用,我们可以进行读取和写入操作。
  2. 当需要文档时,它提供了一个可以随机访问的广泛部分。

DOM 解析器的缺点

  1. 它的内存效率不是很高,因为它需要将整个 XML 文档加载到内存中,所以会占用更多内存。
  2. 与 SAX 解析器相比,它太慢了。

何时使用 DOM

  1. 当您非常了解文档的结构时,请使用它。
  2. 如果您需要多次使用 XML 文档中的信息,请使用它。
  3. 您需要移动 XML 文档的某些部分。

DOM 接口

  1. Node:DOM Node 接口是一个基于抽象的类,许多其他 DOM API 对象都基于它,从而允许这些对象类型以相似的方式使用,并且经常可以互换使用。
  2. Element:它代表一个程序元素,如包、类或方法。
  3. Attr:用于表示元素的属性。
  4. Text:它是 Element 或 Attr 的实际内容。
  5. Document:Document 代表整个 XML 文档。

DOM 方法

序号方法名方法描述
1.getElementId()使用此方法,我们可以访问任何元素。它用于访问任何元素。它通过给定的 ID 访问主元素。
2.getElementsByClassName()它还将返回一个活动 HTMLCollection,其中包含所有具有相同类名的元素。如果找不到元素,则返回一个空的 HTMLCollection。
3.getElementsByTagName()在前面的方法中,我们可能会遇到一些错误。但是此方法可以消除这些问题。getElementsByTagName 允许您在页面上搜索所有具有预定义标签名的元素。
4.querySelector()它返回所有匹配特定 CSS 选择器的元素。
5.querySelectorAll()它将返回与给定选择器集匹配的第一个元素。如果找不到匹配项,则返回 'null'。
6.write("string")此方法用于将给定的字符串写入文档。
7.writeln("string")它与 write 方法类似,但唯一的区别是在末尾添加了一个换行符。

示例

文档对象模型示例程序

HTML 代码

输出

Java DOM

Java 中 DOM 的程序

要在 Java 中执行 DOM,我们需要遵循几个步骤

步骤 1:导入所需的包。

步骤 2:使用 DocumentBuilderFactory 类和 DocumentBuilder 类创建 DocumentBuilder。

步骤 3:创建 Document 流

步骤 4:提取根元素。

步骤 5:分析属性。

示例

XML 代码

Java 代码

输出

Java DOM

DOM 的要点

  1. DOM 的缩写是 Document Object Model(文档对象模型)。
  2. 它以树形结构存在。
  3. DOM 解析器比 SAX 解析器快。
  4. 最适合小型文档。
  5. 它不擅长在低内存情况下创建 XML 文档。
  6. DOM 解析器可以创建内部结构。
  7. 它可以插入或删除节点。
  8. 在 DOM 解析器中,可以进行反向和前向搜索。
  9. 适合大型 XML 文档。
  10. 它将整个 XML 文档加载到内存中。

什么是 SAX(XML 的简单 API)解析器?

SAX 代表 XML 的简单 API,SAX API 由 SAX 解析器实现。这个 API 称为基于事件的 API,它提供了关于处理器的接口。有四个处理器接口:ContentHandler、DTDHandler、EntityResolver 和 ErrorHandler 接口。

它不创建内部结构。相反,它将数据文档的元素事件视为事件,然后它在读取数据文档时通知用户它读取的内容。它适用于大型 XML 文档,因为它不需要加载整个 XML 文档。

SAX 解析器的特点

  1. SAX 解析器无法创建内部结构。
  2. 这些基于事件的 SAX 解析器在 Java 中工作时,其行为类似于事件监听器。

SAX 解析器的优点

  1. 非常易于使用,内存效率高。
  2. 其运行时速度非常快,并且可以处理更大的文档或文件系统。

SAX 解析器的缺点

  1. 由于是基于事件的 API,其理解 API 的能力非常有限。
  2. 由于数据量很大,我们无法获得完整的信息。

SAX 解析器的要点

  1. SAX 的缩写是 Simple API for XML(XML 的简单 API)。
  2. 它是一个基于事件的解析器。
  3. SAX 解析器比 DOM 解析器慢。
  4. 最适合大型文档。
  5. 它适用于在 Java 中创建 XML 文档。
  6. SAX 解析器无法创建内部结构。
  7. 它是按顺序读取的。
  8. 在 SAX 解析器中,反向搜索是不可能的。
  9. 适合内存高效。
  10. 只有一小部分 XML 文档被加载到内存中。

下一主题Java 退出码 13