XML DOM 节点类型 最全速查表(2025 版)
------ 一张表吃透 12 种节点,面试 + 实战直接背!
| nodeType | 常量名(标准) | 中文名称 | nodeName | nodeValue | textContent | 日常是否常用 | 经典用途 |
|---|---|---|---|---|---|---|---|
| 1 | ELEMENT_NODE | 元素节点 | 标签名(大写,如 BOOK) | null | 元素内全部文本(最常用!) | 100% | 所有标签 |
| 2 | ATTRIBUTE_NODE | 属性节点 | 属性名(如 id) | 属性值 | 属性值 | 80% | 读写属性 |
| 3 | TEXT_NODE | 文本节点 | "#text" | 文本内容(可能含空格换行) | 文本内容 | 90% | 标签里的文字 |
| 4 | CDATA_SECTION_NODE | CDATA 节点 | "#cdata-section" | 不转义的原始内容 | 原始内容 | 10% | 放 |
2025 年你只需要记住这 5 种(占 99.9% 实际场景)
| nodeType | 怎么判断(最快写法) | 一句话记住 |
|---|---|---|
| 1 | node.nodeType === 1 或 node instanceof Element |
所有标签 |
| 3 | node.nodeType === 3 |
文本(包括空格换行) |
| 2 | node.nodeType === 2 |
属性(一般不直接操作) |
| 8 | node.nodeType === 8 |
注释 |
| 9 | node.nodeType === 9 |
整个文档 |
实战判断代码(直接复制到项目里一辈子够用)
javascript
function getNodeType(node) {
switch (node.nodeType) {
case 1: return "元素节点:" + node.tagName;
case 2: return "属性节点:" + node.name + "=" + node.value;
case 3: return "文本节点:" + (node.nodeValue.trim() || "(空白)");
case 8: return "注释节点:" + node.nodeValue.trim();
case 9: return "文档节点";
default: return "其他节点:" + node.nodeType;
}
}
// 过滤只处理元素节点(最常用!)
for (let child of parent.childNodes) {
if (child.nodeType === 1) { // 只处理标签
console.log(child.tagName);
}
}
// 过滤空白文本节点(神技!)
if (node.nodeType === 3 && node.nodeValue.trim() === "") {
// 这是换行或缩进产生的空白文本,直接忽略
continue;
}
2025 年终极记忆口诀(背 5 行就无敌)
text
1 = 元素(标签)
2 = 属性(id="1")
3 = 文本(包括空格)
8 = 注释
9 = 整个文档
其他 = 基本不用管
一张图记住所有取值方式
任意节点
├── nodeType === 1 → 用 tagName + textContent + getAttribute
├── nodeType === 3 → 用 nodeValue(或直接用父元素的 textContent)
├── nodeType === 2 → 用 node.name 和 node.value(或父元素的 getAttribute)
└── 其他 → 基本不关心
记住上面这张表 + 5 行口诀 + 3 段判断代码,
你就已经完全掌握了 XML DOM 的 12 种节点类型,
面试被问"XML DOM 有几种节点类型?分别是什么?"能 10 秒倒背如流!
需要我给你一个"一键查看任意节点 nodeType 可视化工具",随时说一声~