XML DOM 简介(简洁明了版)
XML DOM 全称是 XML Document Object Model(XML 文档对象模型),是 W3C 的官方标准,用于在程序中以树形结构表示、访问和操作 XML 文档。
核心思想
把整个 XML 文档加载到内存中,变成一棵节点树(Node Tree):
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="编程">
<title lang="zh">JavaScript 高级程序设计</title>
<author>扎卡斯</author>
<price>99.00</price>
</book>
</bookstore>
这棵树的结构是:
文档节点 (Document)
└── bookstore (元素节点)
└── book (元素节点)
├── title (元素节点,属性 lang="zh")
│ └── "JavaScript 高级程序设计" (文本节点)
├── author (元素节点)
│ └── "扎卡斯" (文本节点)
└── price (元素节点)
└── "99.00" (文本节点)
DOM 的主要特点
| 特点 | 说明 |
|---|---|
| 树形结构 | 所有内容都是节点(元素、属性、文本、注释等) |
| 完全加载到内存 | 适合中小型 XML 文件(大文件会占用大量内存) |
| 读写随意 | 可以随时读取、修改、添加、删除节点 |
| 跨语言支持 | JavaScript、Java、Python、C#、PHP 等几乎所有语言都支持 |
| 简单易用 | API 直观,适合初学者和大多数业务场景 |
常见操作(以 JavaScript 为例)
// 加载 XML
const xmlDoc = new DOMParser().parseFromString(xmlString, "text/xml");
// 读取
xmlDoc.getElementsByTagName("title")[0].textContent
// 修改
node.setAttribute("lang", "cn");
node.textContent = "新标题";
// 添加新节点
const newNode = xmlDoc.createElement("book");
root.appendChild(newNode);
// 删除
node.parentNode.removeChild(node);
DOM vs 其他 XML 解析方式
| 方式 | 内存占用 | 读取速度 | 是否支持写 | 适用场景 |
|---|---|---|---|---|
| DOM | 高 | 慢 | 支持 | 小中型 XML,随意读写 |
| SAX | 极低 | 快 | 不支持 | 超大 XML,只读顺序处理 |
| StAX/pull | 低 | 快 | 部分支持 | 大文件,需要控制解析过程 |
一句话总结
XML DOM = 把整个 XML 当成一棵树放进内存,让你像操作对象一样自由地读、写、改、删。
最常用场景:浏览器端解析 XML、配置文件处理、前后端交互中的 XML 数据操作。
需要完整代码示例或某个语言的具体用法,随时告诉我!