下面给你整理一份 XML 实例教程:nodeName、nodeValue 和 nodeType 属性,通过概念解析、语法示例和实战演示,帮助你理解这些核心 DOM 节点属性的作用。
📘 一、XML 节点基础
在 DOM(Document Object Model) 中,XML 文档被表示为树状结构,每个元素、属性、文本节点、注释等都是 节点(Node)。
- 节点类型:
- 元素节点 (
ELEMENT_NODE) - 属性节点 (
ATTRIBUTE_NODE) - 文本节点 (
TEXT_NODE) - 注释节点 (
COMMENT_NODE) - 文档节点 (
DOCUMENT_NODE) 等
- 元素节点 (
每个节点都包含一些通用属性,其中最常用的是:
nodeNamenodeValuenodeType
📘 二、nodeName 属性
- 作用:返回节点的名称
- 适用节点类型:
- 元素节点:返回标签名
- 属性节点:返回属性名
- 文本节点:返回
#text - 注释节点:返回
#comment
示例:
let xmlString = `
<book id="b001">
<title>XML 入门</title>
<author>阿杰</author>
</book>`;
let parser = new DOMParser();
let xmlDoc = parser.parseFromString(xmlString, "text/xml");
let bookNode = xmlDoc.getElementsByTagName("book")[0];
console.log(bookNode.nodeName); // 输出 "book"
let titleNode = xmlDoc.getElementsByTagName("title")[0];
console.log(titleNode.nodeName); // 输出 "title"
📘 三、nodeValue 属性
- 作用:返回或设置节点的值
- 说明:
- 元素节点:
nodeValue为null - 属性节点:
nodeValue为属性值 - 文本节点:
nodeValue为文本内容 - 注释节点:
nodeValue为注释内容
- 元素节点:
示例:
// 文本节点
let titleTextNode = titleNode.firstChild;
console.log(titleTextNode.nodeValue); // 输出 "XML 入门"
// 属性节点
let idAttr = bookNode.getAttributeNode("id");
console.log(idAttr.nodeValue); // 输出 "b001"
// 修改文本内容
titleTextNode.nodeValue = "XML 基础教程";
console.log(titleTextNode.nodeValue); // 输出 "XML 基础教程"
📘 四、nodeType 属性
- 作用:返回节点的类型(一个整数)
- 常用类型:
| nodeType 值 | 含义 |
|---|---|
| 1 | 元素节点(ELEMENT_NODE) |
| 2 | 属性节点(ATTRIBUTE_NODE) |
| 3 | 文本节点(TEXT_NODE) |
| 8 | 注释节点(COMMENT_NODE) |
| 9 | 文档节点(DOCUMENT_NODE) |
示例:
console.log(bookNode.nodeType); // 输出 1
console.log(titleTextNode.nodeType); // 输出 3
console.log(idAttr.nodeType); // 输出 2
📘 五、结合示例综合使用
let xmlString = `
<book id="b001">
<title>XML 入门</title>
<author>阿杰</author>
</book>`;
let parser = new DOMParser();
let xmlDoc = parser.parseFromString(xmlString, "text/xml");
let bookNode = xmlDoc.getElementsByTagName("book")[0];
console.log("节点名称:", bookNode.nodeName); // book
console.log("节点类型:", bookNode.nodeType); // 1
let idAttr = bookNode.getAttributeNode("id");
console.log("属性名称:", idAttr.nodeName); // id
console.log("属性值:", idAttr.nodeValue); // b001
console.log("属性类型:", idAttr.nodeType); // 2
let titleNode = xmlDoc.getElementsByTagName("title")[0];
let titleTextNode = titleNode.firstChild;
console.log("文本内容:", titleTextNode.nodeValue); // XML 入门
console.log("文本节点类型:", titleTextNode.nodeType); // 3
- 解析逻辑:
nodeName:获取节点或属性的名称nodeValue:获取节点值(文本或属性值)nodeType:区分节点类型
📘 六、总结
- nodeName:节点的名称(元素标签名、属性名、文本或注释标识)
- nodeValue:节点的值(文本内容或属性值),元素节点一般为
null - nodeType:节点类型的整数表示,方便程序判断
- 结合使用可以遍历、读取和修改 XML 文档内容