XML实例教程:nodeNamenodeValue 和 nodeType 属性

在XML中,文档是由许多不同类型的节点(Node)组成的。每个节点有不同的属性和方法来访问其内容和信息。在XML的DOM(文档对象模型)中,nodeNamenodeValue 和 nodeType 是常用的属性,它们帮助我们了解和操作XML文档中的节点。

1. nodeName 属性

nodeName 属性返回当前节点的名称。这个属性是所有节点(元素节点、属性节点、文本节点等)通用的,能够帮助我们知道节点的类型。

  • 元素节点(Element):返回元素的标签名称。
  • 属性节点(Attribute):返回属性的名称。
  • 文本节点(Text):返回 #text,即表示文本内容的节点。

1.1 示例:元素节点

<book>
    <title>XML教程</title>
    <author>John Doe</author>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleNode = xmlDoc.getElementsByTagName("title")[0];
console.log(titleNode.nodeName);  // 输出: "title"

在这个例子中,titleNode.nodeName 将返回 title,表示该节点是 <title> 元素。

1.2 示例:属性节点

<book category="XML教程">
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var categoryNode = xmlDoc.documentElement.getAttributeNode("category");
console.log(categoryNode.nodeName);  // 输出: "category"

在这个例子中,categoryNode.nodeName 将返回 category,表示属性的名称。

1.3 示例:文本节点

<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleTextNode = xmlDoc.getElementsByTagName("title")[0].firstChild;
console.log(titleTextNode.nodeName);  // 输出: "#text"

对于文本节点,nodeName 返回 #text,表示这是一个文本节点。


2. nodeValue 属性

nodeValue 属性用于获取或设置节点的值。对于不同类型的节点,它的含义也有所不同:

  • 元素节点(Element)nodeValue 返回 null,因为元素节点本身没有值,只有子元素或文本内容。
  • 属性节点(Attribute)nodeValue 返回属性的值。
  • 文本节点(Text)nodeValue 返回节点的文本内容。

2.1 示例:元素节点

<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleNode = xmlDoc.getElementsByTagName("title")[0];
console.log(titleNode.nodeValue);  // 输出: null

对于元素节点,nodeValue 返回 null

2.2 示例:属性节点

<book category="XML教程">
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var categoryNode = xmlDoc.documentElement.getAttributeNode("category");
console.log(categoryNode.nodeValue);  // 输出: "XML教程"

对于属性节点,nodeValue 返回属性的值,在这个例子中是 "XML教程"

2.3 示例:文本节点

<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleTextNode = xmlDoc.getElementsByTagName("title")[0].firstChild;
console.log(titleTextNode.nodeValue);  // 输出: "XML教程"

对于文本节点,nodeValue 返回节点的文本内容,这里是 "XML教程"


3. nodeType 属性

nodeType 属性返回节点的类型,它是一个数字,代表不同类型的节点。常见的节点类型包括:

  • 元素节点(Element)nodeType 返回 1
  • 属性节点(Attribute)nodeType 返回 2
  • 文本节点(Text)nodeType 返回 3
  • 注释节点(Comment)nodeType 返回 8

3.1 示例:元素节点

<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleNode = xmlDoc.getElementsByTagName("title")[0];
console.log(titleNode.nodeType);  // 输出: 1

对于元素节点,nodeType 返回 1

3.2 示例:属性节点

<book category="XML教程">
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var categoryNode = xmlDoc.documentElement.getAttributeNode("category");
console.log(categoryNode.nodeType);  // 输出: 2

对于属性节点,nodeType 返回 2

3.3 示例:文本节点

<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var titleTextNode = xmlDoc.getElementsByTagName("title")[0].firstChild;
console.log(titleTextNode.nodeType);  // 输出: 3

对于文本节点,nodeType 返回 3

3.4 示例:注释节点

<!-- 这是一个注释 -->
<book>
    <title>XML教程</title>
</book>

JavaScript 代码:

var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var commentNode = xmlDoc.firstChild;
console.log(commentNode.nodeType);  // 输出: 8

对于注释节点,nodeType 返回 8


4. 总结

  • nodeName:返回节点的名称。
    • 元素节点:返回标签名称。
    • 属性节点:返回属性名称。
    • 文本节点:返回 #text
  • nodeValue:返回节点的值。
    • 元素节点:返回 null
    • 属性节点:返回属性值。
    • 文本节点:返回文本内容。
  • nodeType:返回节点的类型(数字表示)。
    • 元素节点:1
    • 属性节点:2
    • 文本节点:3
    • 注释节点:8

这些属性帮助我们在处理XML文档时获取节点的基本信息,特别是在操作和遍历DOM树时,它们是非常重要的工具。