XML DOM 节点类型

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 === 1node 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 可视化工具",随时说一声~

相关推荐
小兔崽子去哪了18 分钟前
Java 自动化部署
java·后端
ma_king23 分钟前
入门 java 和 数据库
java·数据库·后端
后端AI实验室30 分钟前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
码路飞5 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing5 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven977 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德18 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆20 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌1 天前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊1 天前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端