关于DOM
DOM是针对XML的基于树的API。它关注的不仅仅是解析XML代码,而是一系列互相关联的对象来表达这些代码,而这些代码可以被修改且无需重新解析他们就可以可以直接访问他们。
* DOM是与语言无关的API,这意味着它的实现并不与java,javascript或者其他语言绑定。
一、节点的层次
当谈论dom的时候,实际上谈论的是节点的层次,dom定义了node接口以及许多种节点类型来表示xml节点的多个方面。
1、Document -最顶层的节点,其他所有的节点都附属于它。
2、DocummentType-DTD的引用的对象形式,不能包含子节点。
3、DocumentFragment--可以像Document一样保存其他节点
4、Element --表示起始节点和结束节点之间的内容。唯一可以包含特新和子节点的节点类型。
5、Attr --代表一对特性名和特性值。不包含子节点
6、Text --代表XML文档在起始标签和结束标签之间的,或者Cdata-Session之间的普通文本。
7、CData-Session--<![CDATA[]]>的对象表现形式,这个节点类型仅能包含节点类型的text作为子节点。
8、Entity --表示DTD中的一个实体定义。
9、EntityReference--代表一个实体引用。不能包含子节点。
10、Comment-- 代表注释
11、Notation --代表dtd中定义的记号。
二、所有的节点都包含的特性和方法
特性、方法 | 类型、返回值 | 说明 |
nodeName | String | 节点的名字 |
nodeValue | String | 节点的值:根据节点的类型而定 |
NodeType | Number | 节点的类型常量之一 |
ownerDocument | Document | 指向这个节点所属的文档 |
childnodes | Nodelist | 所有子节点的列表 |
firstchild | Node | 指向childnodes列表中的第一个节点 |
lastchild | Node | 指向childnodes列表中的最后一个节点 |
previousSibling | Node | 指向前一个兄弟节点,如果这个节点就是第一个兄弟节点,那么该值为null |
nextSibling | Node | 指向后一个兄弟节点,如果这个节点就是最后个兄弟节点,那该值就是null |
HasChildNodes() | Boolean | 当childNodes中包含一个或者多个节点时返回真 |
Atttibutes | NamedNodeMap | 包含了代表一个元素的特性的Attr对象,仅用于Element节点 |
AppendChild(node) | Node | 将node 添加到childNodes的末尾 |
RemoveChild(node) | Node | 从childNodes中移除node |
ReplaceChild(newnode,oldnode) | Node | 用newnode替换oldnode |
InsertBefore( newnode,refnode) | Node | 在refnode之前插入newnode |