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

相关推荐
gaize12132 分钟前
如何编写一个简单的服务器应用程序?
服务器·云计算
rchmin3 分钟前
Java内存模型(JMM)详解
java·开发语言
studytosky3 分钟前
Linux系统编程:深度解析 Linux 进程,从底层架构到内存模型
linux·运维·服务器·开发语言·架构·vim
Wpa.wk10 分钟前
Tomcat的安装与部署使用 - 说明版
java·开发语言·经验分享·笔记·tomcat
吧啦蹦吧15 分钟前
java.lang.Class#isAssignableFrom(Class<?> cls)
java·开发语言
都是蠢货22 分钟前
drop delete和truncate的区别?
java·开发语言
Stella252136 分钟前
实习日志|知识总结
linux·服务器·软件测试·数据库
凤凰战士芭比Q38 分钟前
Nexus仓库(maven仓库、Yum仓库、APT仓库)
java·maven
weixin_4624462340 分钟前
【原创实践】使用 shell 脚本批量创建 Linux 用户并生成随机密码
linux·服务器·前端
海奥华21 小时前
进程调度算法 笔记总结
linux·运维·服务器·笔记·学习