在 XML DOM 中,可以通过访问节点的属性和方法来获取节点的信息。以下是一些常用的 DOM 节点信息获取方式:

1. 节点类型(NodeType):

每个节点都有一个类型,可以通过 nodeType 属性获取。常见的节点类型有:

  •  1(ELEMENT_NODE): 元素节点

  •  2(ATTRIBUTE_NODE): 属性节点

  •  3(TEXT_NODE): 文本节点

  •  8(COMMENT_NODE): 注释节点

  •  9(DOCUMENT_NODE): 文档节点

  •  11(DOCUMENT_FRAGMENT_NODE): 文档片段节点

var nodeType = element.nodeType;
console.log("Node Type:", nodeType);

2. 节点名称(NodeName):

nodeName 属性用于获取节点的名称。对于元素节点,返回元素的标签名;对于文本节点,返回 #text。
var nodeName = element.nodeName;
console.log("Node Name:", nodeName);

3. 节点值(NodeValue):

nodeValue 属性用于获取或设置节点的值。对于文本节点,表示文本内容;对于元素节点,通常为 null。
var nodeValue = element.nodeValue;
console.log("Node Value:", nodeValue);

4. 节点的子节点数量和子节点列表:

通过 childNodes 属性获取节点的所有子节点列表,以及通过 childElementCount 获取元素节点的子元素数量。
var childNodes = element.childNodes;
var childElementCount = element.childElementCount;

console.log("Child Nodes:", childNodes);
console.log("Child Element Count:", childElementCount);

5. 父节点(parentNode)和兄弟节点:

通过 parentNode 属性获取节点的父节点,通过 nextSibling 和 previousSibling 获取兄弟节点。
var parentNode = element.parentNode;
var nextSibling = element.nextSibling;
var previousSibling = element.previousSibling;

console.log("Parent Node:", parentNode);
console.log("Next Sibling:", nextSibling);
console.log("Previous Sibling:", previousSibling);

6. 节点是否包含子节点:

通过 hasChildNodes 方法检查节点是否有子节点。
var hasChildren = element.hasChildNodes();
console.log("Has Children:", hasChildren);

示例:

考虑以下 XML 片段:
<book>
  <title>Introduction to XML</title>
  <author>John Doe</author>
</book>

对应的 DOM 节点信息获取:
var bookElement = document.getElementsByTagName("book")[0];

// 获取节点类型
console.log("Node Type:", bookElement.nodeType); // 输出: 1 (ELEMENT_NODE)

// 获取节点名称
console.log("Node Name:", bookElement.nodeName); // 输出: BOOK

// 获取节点值
console.log("Node Value:", bookElement.nodeValue); // 输出: null (对于元素节点)

// 获取子节点数量和子节点列表
console.log("Child Nodes:", bookElement.childNodes); // 输出: NodeList [title, author]
console.log("Child Element Count:", bookElement.childElementCount); // 输出: 2

// 获取父节点和兄弟节点
var parentNode = bookElement.parentNode;
var nextSibling = bookElement.nextSibling;
var previousSibling = bookElement.previousSibling;

console.log("Parent Node:", parentNode); // 输出: DOCUMENT_NODE
console.log("Next Sibling:", nextSibling); // 输出: null (没有下一个兄弟节点)
console.log("Previous Sibling:", previousSibling); // 输出: null (没有前一个兄弟节点)

// 检查是否有子节点
var hasChildren = bookElement.hasChildNodes();
console.log("Has Children:", hasChildren); // 输出: true

这个示例演示了如何通过 DOM 方法和属性获取节点的各种信息。这些信息对于动态操作文档结构和内容非常有用。


转载请注明出处:http://www.zyzy.cn/article/detail/14563/XML DOM