🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# XML DOM 节点类型 DOM 是一个代表节点对象层次的文档。 ## 尝试一下 - 实例 下面的实例使用 XML 文件 [books.xml](images/books.xml)。 函数 [loadXMLDoc()](dom-loadxmldoc.html),位于外部 JavaScript 中,用于加载 XML 文件。 [显示所有元素的 nodeName 和 nodeType](/try/try.php?filename=try_dom_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](/try/try.php?filename=try_dom_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 | #document | null | | DocumentFragment | #document fragment | null | | DocumentType | 文档类型名称 | null | | Entity参考手册 | 实体引用名称 | null | | Element | 元素名称 | null | | Attr | 属性名称 | 属性值 | | ProcessingInstruction | 目标 | 节点的内容 | | Comment | #comment | 注释文本 | | Text | #text | 节点的内容 | | CDATASection | #cdata-section | 节点的内容 | | Entity | 实体名称 | null | | Notation | 符号名称 | null | ## 节点类型 - 命名常量 | 节点类型 | 命名常量 | | :-- | :-- | | 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 |