文档对象模型(Document Object Model, DOM),使用这种树 API 可以直接访问 XML 文档的各个部分。DOM 可能是最为流行的 XML 文档访问方式,它通过损失性能实现了访问的便利性。
Document Object Model (DOM) [W3C 推荐标准] 是一种用于 XML 文档的对象模型,可用于直接访问 XML 文档的各个部分。在 DOM 中,文档被模拟为树状,其中 XML 语法的每个组成部分(例如元素或文本内容)都被表示为一个节点。作为一种 API,DOM 允许您遍历文档树,从父节点移动到子节点和兄弟节点等,并利用某种节点类型特有的属性(元素具有属性,而文本节点具有文本数据)。DOM 被设计为与语言无关。OMG(Object Management Group, 对象管理组)的 CORBA Interface Definition Language (IDL) [ISO 国际标准,编号 14750] 可用于表示 DOM 节点和支持接口。
DOM 最初源于 Web 浏览器中对 HTML 和 XML 对象标准化脚本操作的对象模型。某些情况下,当将它作为独立的编程 API 时,使用起来有些笨拙,而本文主要讨论的就是这种用法。DOM 的发展经历了不同级别,每一级别在前一级别基础上添加了新功能。级别 1 涵盖了基本功能;级别 2 添加了名称空间支持、UI 事件模型、迭代器等功能;级别 3 添加了可从 XML 文档文件进行加载和保存的 API,并集成了 XPath,添加了验证支持等。
通常,DOM 比 Simple API for XML (SAX) 更容易掌握,因为它没有涉及回调和复杂的状态管理。然而,DOM 的实现常常将所有 XML 节点保持在内存中,这使较大的文档变得效率低下。尽管许多语言都提供了 DOM 的实现,但是 DOM 试图实现与语言无关,这使得其他语言的追随者经常抱怨 DOM 非常笨拙且不能利用任何语言的专长。因此,涌现出众多特定于语言的树 API。