在DOM中,系统将文件解析为树形的数据结构,这样就很容易对其进行遍历、删除、修改等操作。
在JDK中,对DOM的操作API主要集中在包org.w3c.dom中,在org.w3c.dom中,所有内容都被解释为节点。
org.w3c.dom.Node
该包是xml中所有API的父接口,里面提供了对节点的基本操作,如获取节点信息、获取子节点、添加节点等。Node(节点)可以是元素节点、属性节点、文本节点等。
Node对象常用的属性:
属性 |
描述 |
childNodes |
返回节点到子节点的节点列表。 |
firstChild |
返回节点的首个子节点。 |
lastChild |
返回节点的最后一个子节点。 |
localName |
返回节点的本地名称。 |
namespaceURI |
返回节点的命名空间 URI。 |
nextSibling |
返回节点之后紧跟的同级节点。 |
nodeName |
返回节点的名称,根据其类型。 |
nodeType |
返回节点的类型。 |
nodeValue |
设置或返回节点的值,根据其类型。 |
ownerDocument |
返回节点的根元素(document 对象)。 |
parentNode |
返回节点的父节点。 |
textContent |
设置或返回节点及其后代的文本内容。 |
Node 对象常用方法:
方法 |
描述 |
appendChild() |
向节点的子节点列表的结尾添加新的子节点。 |
cloneNode() |
复制节点。 |
getUserData(key) |
返回与此节点上的某个键相关联的对象。此对象必须首先通过使用相同的键来调用 setUserData 被设置到此节点。 |
hasAttributes() |
判断当前节点是否拥有属性。 |
hasChildNodes() |
判断当前节点是否拥有子节点。 |
insertBefore() |
在指定的子节点前插入新的子节点。 |
isDefaultNamespace(URI) |
返回指定的命名空间 URI 是否为默认。 |
isEqualNode() |
检查两个节点是否相等。 |
isSameNode() |
检查两个节点是否是相同的节点。 |
isSupported() |
返回当前节点是否支持某个特性。 |
lookupNamespaceURI() |
返回匹配指定前缀的命名空间 URI。 |
normalize() |
合并相邻的Text节点并删除空的Text节点。 |
removeChild() |
删除(并返回)当前节点的指定子节点。 |
replaceChild() |
用新节点替换一个子节点。 |
selectNodes() |
用一个 XPath 表达式查询选择节点。 |
transformNode() |
使用 XSLT 把一个节点转换为一个字符串。 |
transformNodeToObject() |
使用 XSLT 把一个节点转换为一个文档。 |
2. org.w3c.dom.Document
Document 对象代表整个 XML 文档。
Document 对象是一棵文档树的根,可为我们提供对文档数据的最初(或最顶层)的访问入口。用于元素节点、文本节点、注释、处理指令等均无法存在于 document 之外,document 对象同样提供了创建这些对象的方法。Node 对象提供了一个 ownerDocument 属性,此属性可把它们与在其中创建它们的 Document 关联起来。
Document 对象的常用属性:
属性 |
描述 |
async |
规定 XML 文件的下载是否应当被同步处理。 |
childNodes |
返回属于文档的子节点的节点列表。 |
doctype |
返回与文档相关的文档类型声明 (DTD)。 |
documentElement |
返回文档的根节点 |
documentURI |
设置或返回文档的位置 |
firstChild |
返回文档的首个子节点 |
inputEncoding |
返回用于文档的编码方式(在解析时)。 |
lastChild |
返回文档的最后一个子节点。 |
nodeName |
依据节点的类型返回其名称。 |
nodeType |
返回节点的节点类型。 |
nodeValue |
根据节点的类型来设置或返回节点的值。 |
xmlEncoding |
返回文档的编码方法。 |
xmlStandalone |
设置或返回文档是否为 standalone。 |
xmlVersion |
设置或返回文档的 XML 版本。 |
Document 对象的常用方法:
方法 |
描述 |
adoptNode(sourcenode) |
从另一个文档向本文档选定一个节点,然后返回被选节点。 |
createAttribute(name) |
创建拥有指定名称的属性节点,并返回新的 Attr 对象。 |
createAttributeNS(uri,name) |
创建拥有指定名称和命名空间的属性节点,并返回新的 Attr 对象。 |
createComment() |
创建注释节点。 |
createDocumentFragment() |
创建空的 DocumentFragment 对象,并返回此对象。 |
createElement() |
创建元素节点 |
createEntityReference(name) |
创建 EntityReference 对象,并返回此对象。 |
createRange() |
创建 Range 对象,并返回此对象。 |
createTextNode() |
创建文本节点。 |
getElementById() |
查找具有指定的唯一 ID 的元素。 |
getElementsByTagName() |
返回所有具有指定名称的元素节点。 |
getElementsByTagNameNS() |
返回所有具有指定名称和命名空间的元素节点。 |
importNode() |
把一个节点从另一个文档复制到该文档以便应用。 |
loadXML() |
通过解析XML标签字符串来组成文档。 |
renameNode() |
重命名元素或者属性节点。 |
3. org.w3c.dom.Element
Element 对象表示 XML 文档中的元素。元素可包含属性、其他元素或文本。如果元素含有文本,则在文本节点中表示该文本。
Element 对象的常用属性:
属性 |
描述 |
attributes |
返回元素的属性的 NamedNodeMap |
childNodes |
返回元素的子节点的 NodeList |
firstChild |
返回元素的首个子节点 |
lastChild |
返回元素的最后一个子节点 |
localName |
返回元素名称的本地部分 |
nodeName |
返回节点的名称,依据其类型。 |
nodeType |
返回节点的类型 |
ownerDocument |
返回元素所属的根元素 (document 对象) |
parentNode |
返回元素的父节点 |
tagName |
返回元素的名称 |
textContent |
设置或返回元素及其后代的文本内容 |
Element 对象的常用方法:
方法 |
描述 |
appendChild() |
向节点的子节点列表末尾添加新的子节点。 |
cloneNode() |
克隆节点。 |
getAttribute() |
返回属性的值。 |
getAttributeNS() |
返回属性的值。 |
getAttributeNode() |
以 Attribute 对象返回属性节点。 |
getElementsByTagName() |
找到具有指定标签名的子孙元素。 |
hasAttribute() |
返回元素是否拥有指定的属性。 |
hasAttributeNS() |
返回元素是否拥有指定的属性。 |
hasAttributes() |
返回元素是否拥有属性。 |
hasChildNodes() |
返回元素是否拥有子节点。 |
removeAttribute() |
删除指定的属性。 |
removeAttributeNode() |
删除指定的属性节点。 |
removeChild() |
删除子节点。 |
replaceChild() |
替换子节点。 |
setAttribute() |
添加新属性。 |
setAttributeNode() |
添加新的属性节点。 |
4. org.w3c.dom.Attr
Attr 对象表示 Element 对象的属性。由于 Attr 对象也是一种节点,因此它继承 Node 对象的属性和方法。不过属性无法拥有父节点,同时属性也不被认为是元素的子节点,对于许多 Node 对象的属性来说都将返回 null。
Attr 对象的常用属性
属性 |
描述 |
isId |
如果属性是 id 类型,则返回 true,否则返回 false。 |
localName |
返回属性名称的本地部分。 |
name |
返回属性的名称。 |
nodeName |
返回节点的名称,依据其类型。 |
nodeType |
返回节点的类型。 |
nodeValue |
设置或返回节点的值,依据其类型。 |
ownerDocument |
返回属性所属的根元素(document对象)。 |
ownerElement |
返回属性所附属的元素节点。 |
textContent |
设置或返回属性的文本内容。 |
text |
返回属性的文本。IE-only。 |
value |
设置或返回属性的值。 |
5. org.w3c.dom.NodeList
NodeList 对象代表一个有顺序的节点列表。我们可通过节点列表中的节点索引号来访问列表中的节点(索引号由0开始)。节点列表可保持其自身的更新。如果节点列表或 XML 文档中的某个元素被删除或添加,列表也会被自动更新。
NodeList 对象的属性:
属性 |
描述 |
length |
可返回节点列表中的节点数目。 |
NodeList 对象的方法:
方法 |
描述 |
item() |
可返回节点列表中处于指定的索引号的节点。 |