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

相关推荐
刀法如飞7 小时前
AI时代:DDD领域驱动建模与Ontology语义建模的区别
java·设计模式·架构
jeffer_liu7 小时前
Spring AI 生产级实战:工具调用
java·人工智能·后端·spring·ai编程
比昨天多敲两行7 小时前
linux 线程概念与控制
java·开发语言·jvm
8Qi87 小时前
LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅
java·算法·leetcode·指针·排序
zzhongcy8 小时前
@Transactional 同类内部调用失效 + 两种自代理解决方案
java
AutumnWind04208 小时前
【Intelij IDEA使用手册】
java·ide·intellij-idea
就叫_这个吧9 小时前
Java注解、元注解、自定义注解定义及应用
java·开发语言·注解
Sam_Deep_Thinking9 小时前
聊聊Java中的of
java·开发语言·架构
NE_STOP10 小时前
Docker--管理监控平台的应用
java
广州灵眸科技有限公司11 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器