XML DOM 节点类型


DOM 是一个代表节点对象层次的文档。

在线实例

下面的实例使用 XML 文件 books.xml。
函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

显示所有元素的 nodeName 和 nodeType

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"> 
</script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("books.xml");

document.write("Nodename: " + xmlDoc.nodeName);
document.write(" (nodetype: " + xmlDoc.nodeType + ")<br>");

x=xmlDoc.documentElement;

document.write("Nodename: " + x.nodeName);
document.write(" (nodetype: " + x.nodeType + ")<br>");

y=x.childNodes;

for (i=0;i<y.length;i++)
{
document.write("Nodename: " + y[i].nodeName);
document.write(" (nodetype: " + y[i].nodeType + ")<br>");
for (z=0;z<y[i].childNodes.length;z++)
  {
  document.write("Nodename: " + y[i].childNodes[z].nodeName);
  document.write(" (nodetype: " + y[i].childNodes[z].nodeType + ")<br>");
  }
}
</script>
</body>
</html>

显示所有元素的 nodeName 和 nodeValue

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"> 
</script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("books.xml");

document.write("Nodename: " + xmlDoc.nodeName);
document.write(" (value: " + xmlDoc.childNodes[0].nodeValue + ")<br>");

x=xmlDoc.documentElement;

document.write("Nodename: " + x.nodeName);
document.write(" (value: " + x.childNodes[0].nodeValue + ")<br>");

y=xmlDoc.documentElement.childNodes;

for (i=0;i<y.length;i++)
{
if (y[i].nodeType!=3)
  {
  document.write("Nodename: " + y[i].nodeName);
  document.write(" (value: " + y[i].childNodes[0].nodeValue + ")<br>");
  for (z=0;z<y[i].childNodes.length;z++)
    {
    if (y[i].childNodes[z].nodeType!=3)
      {
      document.write("Nodename: " + y[i].childNodes[z].nodeName);
      document.write(" (value: " + y[i].childNodes[z].childNodes[0].nodeValue + ")<br>");
      }
    }
  }
}
</script>
</body>
</html>

节点类型

下面的表格列举了不同的 W3C 节点类型,每个节点类型中可能会包含子类:

节点类型描述子类
Document代表整个文档(DOM 树的根节点)Element (max. one), ProcessingInstruction, Comment, DocumentType
DocumentFragment代表"轻量级"的 Document 对象,它可以保留文档中的一部分Element, ProcessingInstruction, Comment, Text, CDATASection, Entity参考手册
DocumentType为文档中定义的实体提供了一个接口None
ProcessingInstruction代表一个处理指令None
EntityReference代表一个实体引用Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
Element表示一个元素Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
Attr代表一个属性Text, EntityReference
Text代表元素或属性的文本内容None
CDATASection代表文档中的 CDATA 区段(文本不会被解析器解析)None
Comment代表一个注释None
Entity代表一个实体Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
Notation定义一个在 DTD 中声明的符号None

节点类型 - 返回值

下面的表格列举了每个节点类型(nodetype)所返回的节点名称(nodeName)和节点值(nodeValue):

节点类型返回的节点名称返回的节点值
Document#documentnull
DocumentFragment#document fragmentnull
DocumentType文档类型名称null
Entity参考手册实体引用名称null
Element元素名称null
Attr属性名称属性值
ProcessingInstruction目标节点的内容
Comment#comment注释文本
Text#text节点的内容
CDATASection#cdata-section节点的内容
Entity实体名称null
Notation符号名称null

节点类型 - 命名常量

节点类型命名常量
1ELEMENT_NODE
2ATTRIBUTE_NODE
3TEXT_NODE
4CDATA_SECTION_NODE
5ENTITY_REFERENCE_NODE
6ENTITY_NODE
7PROCESSING_INSTRUCTION_NODE
8COMMENT_NODE
9DOCUMENT_NODE
10DOCUMENT_TYPE_NODE
11DOCUMENT_FRAGMENT_NODE
12NOTATION_NODE