Java DOM:文档对象
DOMDocument
对象代表一个XML文档。当我们使用Java DOM解析器解析XML文件时,我们将获得一个Document
对象。在本文中,我将为我们提供遍历DOM图的领先优势。我无法涵盖所有内容,但这不是必需的。我们只需要足够的图片即可。其余的我们可以在JavaDoc中阅读。
DOM的两个最常用的函数是:
- 访问元素的子元素
- 访问元素的属性
本文涵盖的是这两个主要函数。
"文档"接口和所有相关接口位于Java包" org.w3c.dom"中,因为它们是由万维网联盟(W3C)设计的。在JavaDoc中寻找DOM接口时,我们需要知道这一点。
DOM文档元素
DOM对象包含许多以树状结构连接的不同节点。顶部是"文档"对象。 "文档"对象只有一个根元素,可以通过调用" getDocumentElement()"来返回,如下所示:
Element rootElement = document.getDocumentElement();
DOM元素,子元素和节点接口
根元素具有子元素,可以是元素,注释,处理指令,字符等。我们可以像这样获得元素的子元素:
NodeList nodes = element.getChildNodes(); for(int i=0; i<nodes.getLength(); i++){ Node node = nodes.item(i); if(node instanceof Element){ //a child element to process Element child = (Element) node; String attribute = child.getAttribute("width"); } }
getChildNodes()方法返回一个NodeList对象,该对象是Node元素的列表。 Node接口是DOM中几乎所有不同节点类型的超级接口。这意味着,"文档"接口继承自(扩展)"节点","元素"接口扩展了"节点","属性"接口扩展了"节点"等。
"节点"是DOM中所有节点接口的超级接口这一事实意味着我们有时必须在"节点"接口中查找所需的方法,例如方法" getChildNodes()"。当尝试遍历"文档"图时,需要注意这一点。
DOM元素属性
如我们所见,我们可以通过Element接口访问元素的属性。有两种方法可以这样做:
String attrValue = element.getAttribute("attrName"); Attr attribute = element.getAttributeNode("attrName");
在大多数情况下,getAttribute()
方法就可以了。
Attr接口扩展了Node。它允许我们通过方法getOwnerElement()
等访问拥有元素。如果需要将属性传递给一个或者多个方法,则该方法需要访问有关该属性的更多信息,因此通过此接口访问属性非常方便。属性以对其进行处理。
我们可以使用Document
对象和相关节点做更多的事情,但是90%的时间将使用访问子元素和属性。其余的可以通过签出JavaDoc来找到。