XML DOM 节点类型(Node Types)

实例

在下面的例子中,我们将使用 XML 文件 books.xml,以及 JavaScript 函数 loadXMLDoc()。

显示所有元素的节点名称和节点类型

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="/example/xdom/loadxmldoc.js">
  4. </script>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. xmlDoc=loadXMLDoc("/example/xdom/books.xml");
  9. document.write("Nodename: " + xmlDoc.nodeName);
  10. document.write(" (nodetype: " + xmlDoc.nodeType + ")<br />");
  11. var x=xmlDoc.documentElement;
  12. document.write("Nodename: " + x.nodeName);
  13. document.write(" (nodetype: " + x.nodeType + ")<br />");
  14. var y=x.childNodes;
  15. for (i=0;i<y.length;i++)
  16. {
  17. document.write("Nodename: " + y[i].nodeName);
  18. document.write(" (nodetype: " + y[i].nodeType + ")<br />");
  19. for (z=0;z<y[i].childNodes.length;z++)
  20. {
  21. document.write("Nodename: " + y[i].childNodes[z].nodeName);
  22. document.write(" (nodetype: " + y[i].childNodes[z].nodeType + ")<br />");
  23. }
  24. }
  25. </script>
  26. </body>
  27. </html>

显示所有元素的节点名称和节点值

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="/example/xdom/loadxmldoc.js">
  4. </script>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. xmlDoc=loadXMLDoc("/example/xdom/books.xml");
  9. document.write("Nodename: " + xmlDoc.nodeName);
  10. document.write(" (value: " + xmlDoc.childNodes[0].nodeValue + ")<br />");
  11. var x=xmlDoc.documentElement;
  12. document.write("Nodename: " + x.nodeName);
  13. document.write(" (value: " + x.childNodes[0].nodeValue + ")<br />");
  14. var y=xmlDoc.documentElement.childNodes;
  15. for (i=0;i<y.length;i++)
  16. {
  17. if (y[i].nodeType!=3)
  18. {
  19. document.write("Nodename: " + y[i].nodeName);
  20. document.write(" (value: " + y[i].childNodes[0].nodeValue + ")<br />");
  21. for (z=0;z<y[i].childNodes.length;z++)
  22. {
  23. if (y[i].childNodes[z].nodeType!=3)
  24. {
  25. document.write("Nodename: " + y[i].childNodes[z].nodeName);
  26. document.write(" (value: " + y[i].childNodes[z].childNodes[0].nodeValue + ")<br />");
  27. }
  28. }
  29. }
  30. }
  31. </script>
  32. </body>
  33. </html>

节点类型

下面的表格列出了不同的 W3C 节点类型,以及它们可拥有的子元素:

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

    节点类型 - 所返回的值

    下面的表格列出了对每个节点类型来说,nodeName 和 nodeValue 属性可返回的值:

    节点类型 nodeName 的返回值 nodeValue 的返回值
    Document #document null
    DocumentFragment #document fragment null
    DocumentType doctype 名称 null
    EntityReference 实体引用名称 null
    Element element name null
    Attr 属性名称 属性值
    ProcessingInstruction target 节点的内容
    Comment #comment 注释文本
    Text #text 节点内容
    CDATASection #cdata-section 节点内容
    Entity 实体名称 null
    Notation 符号名称 null

    NodeTypes - 有名常数

    NodeType Named Constant
    1 ELEMENT_NODE
    2 ATTRIBUTE_NODE
    3 TEXT_NODE
    4 CDATA_SECTION_NODE
    5 ENTITY_REFERENCE_NODE
    6 ENTITY_NODE
    7 PROCESSING_INSTRUCTION_NODE
    8 COMMENT_NODE
    9 DOCUMENT_NODE
    10 DOCUMENT_TYPE_NODE
    11 DOCUMENT_FRAGMENT_NODE
    12 NOTATION_NODE