当讨论DOM树的时候,一般讨论的是节点的层次。DOM定义了Node的接口以及许多种节点类型来表现XML节点的多方面:
| Document | 顶层节点,所有其他节点依附于该节点 |
| DocumentType | DTD引用。它不能包含子节点 |
| DocumentFragment | 可以像Document节点一样保存其他节点 |
| Element | 其实标签和结束标签之间的内容<tag></tag>或者<tag/>这是唯一一个能够包含特性和子节点的节点类型 |
| Attr | 代表一对特性名和特性值,该节点类型不能包含子节点 |
| Text | 代表XML文档中在起始标签和结束标签中或者CData Section中的普通文本。该节点不能包含子节点。 |
| CDataSection | <![CDATA[]]>的对象表现形式,该节点类型只能包含Text作为子节点。 |
| Entity | 在DTD中定义的一个实体对象,这个节点类型不能包含子节点。 |
| EntityReference | 代表一个实体引用,这个节点类型不能包含子节点。 |
| ProcessingInstruction | 代表一个PI,这个节点类型不能包含子节点。 |
| Comment | 代表注释。这个节点类型不能包含子节点。 |
| Notation | 代表在DTD中定义的记号 |
一个文档是有任意多个节点的层次组成的。看看下面的XML文档:
- <?xmlversion="1.0"?>
- <employees>
- <!--onlyemployee-->
- <employee>
- <name>MichaelSmith</name>
- <position>SoftwareEngineer</position>
- <comments><![CDATA[
- HisBirthdayis8/14/68
- ]]>
- </comments>
- </employee>
- </employees>
下面的图对应上面的XML文档:
Node接口中定义了不同节点类型对应的常量,它们将在讨论nodeType属性时用到:
Node.ELEMENT_NODE (1)
Node.ATTRBUTE_NODE(2)
Node.TEXT_NODE(3)
Node.CDATA_SECTION_NODE(4)
Node.ENTITY_REFERENCE_NODE(5)
Node.ENTITY_NODE(6)
Node.PROCESSING_INSTRUCTION_NODE(7)
Node.COMMENT_NODE(8)
Node.DOCUMENT_NODE(9)
Node.DOCUMENT_TYPE_NODE(10)
Node.DOCUMENT_FRAGMENT_NODE(11)
Node.NOTATION_NODE(12)
Node接口还定义了一些所有节点都包含的特性与方法。这里就不列举,后面讲到了再详细说。
参考书目:
《JavaScript高级编程》Nicolas C. Zakas著, 曹力 张欣 等译。
本文深入探讨了DOM树的层次结构,解释了不同类型的节点及其用途,并通过实例展示了XML文档如何组织为DOM树。重点介绍了从顶层的Document节点到最底层的Text节点的各种节点类型,以及它们在构建XML文档时的角色。

1061

被折叠的 条评论
为什么被折叠?



