【Java】使⽤DOM⽅式解析xml⽂件的⽅法
Java解析xml⽂件的⽅法(1)-DOM⽅式
Java中常⽤来解析xml⽂件的⽅法有四种,分别是DOM,SAX,Jdom,Dom4j。
其中,DOM和SAX是java包⾃带的
import org.w3c.dom.*;//dom包
l.sax.*;//sax包
⽽Jdom和Dom4j需要从外部引⽤
<!--jdom -->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
本篇⽂章主要讲解其中的DOM⽅式,⾸先先介绍⼀下xml⽂件的结构。
XML⽂件
XML ⽂档形成了⼀种树结构,它从“根部”开始,然后扩展到“枝叶”。
在编写xml⽂档时,需要注意,第⼀⾏通常是XML声明。它定义XML的版本 (1.0) 和所使⽤的编码 (UTF-8)。
<?xml version="1.0" encoding="utf-8"?>
接下来是xml⽂件的元素描述部分
<root>
....
</root>
由于xml形成了⼀种树结构,所以XML⽂档中有且仅有⼀个根元素,它是其他所有元素的⽗元素,xml⽂档中的元素将会从根元素开始扩展到树的最底端。
如果在⽂档中存在着多个根节点,那么程序运⾏将会提⽰错误信息:“⽂档中根元素后⾯的标记必须格式正确”。
⽗、⼦以及同胞等术语⽤于描述元素之间的关系。⽗元素拥有⼦元素。相同层级上的⼦元素成为同胞(兄弟或妹)。
所有元素均可拥有⽂本内容和属性(类似 HTML 中)。
⽰例:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
java xml是什么</bookstore>
上述例⼦中的根元素是 <bookstore>。⽂档中的所有 <book> 元素都被包含在 <bookstore> 中。<book> 元素有 4 个⼦元素:<title>、<author>、<year>、<price>
DOM解析
使⽤DOM⽅式解析xml⽂件主要⽤到了DOM包中的以下⼏个类及其⽅法
DocumentBuilderFactory
DocumentBuilder
Document
NodeList
Node
解析的顺序为:
创建⼀个DocumentBuilderFactory的对象
创建⼀个DocumentBuilder对象
通过DocunmentBuilder的parse(…)⽅法得到Document对象
通过getElemntsByTagNAme(…)⽅法获得结点的列表
通过for循环遍历每⼀个结点
得到每个结点的属性和属性值
得到每个结点的结点值的节点名。
准备阶段
在开始解析之前,我们需要获取到⼀个Documet对象,
⾸先,调⽤DocumentBuilderFactory类的newInstance⽅法获取到⼀个DocumentBuilderFactory对象然后调⽤其newDocumentBuilder⽅法获取⼀个DocumentBuilder对象,
接着使⽤DocumentBuilder对象的parse⽅法,传⼊⼀个File对象,得到Document对象。
⾄此准备⼯作就完成了
DocumentBuilderFactory factory = wInstance();
DocumentBuilder builder = wDocumentBuilder();
Document d = builder.parse(new File("⽂件路径/l"));
解析⽂件的⽅法
解析时,主要使⽤Document类,Node类,NodeList类
Document类中的⽅法介绍:
getElementsByTagName(String tagName)
参数tagName表⽰元素名,如上述介绍xml⽂件结构时的book、bookstore等,该⽅法将会返回⼀个NodeList对象,其中包含了⽂档中所有元素名为tagName的节点列表。
getElementById(int id)
参数表⽰⽂档中元素的id,⽂档中各个元素所拥有的id属性是唯⼀的,通过该⽅法可以到某个id所对应的节点。
Node类:
Node类是主要描述xml⽂档中元素的⼀个类,通过Node对象,可以获取到当前节点的⽗节点,⼦节点列表,属性值,⽂本值等等
主要使⽤的⽅法有:
getNodeType()
通过此⽅法能够获取到当前Node对象所表⽰的节点的类型,使⽤dom⽅式解析时,⽂档中的⽂本区域以及空格也属于⼀种Node,其NodeType值为Node.TEXT_NODE,其余的NodeType还有Node.ELEMENT_NODE等等。
getChildNodes()
调⽤此⽅法,会返回⼀个NodeList,代表的是当前节点下的所有⼦节点列表。
getTextContent()
调⽤此⽅法,返回xml⽂件中,被当前节点包裹的⽂本内容。
getNodeName
获取当前节点的名称。
其他具体的⽅法⾃⾏百度,此处不详细说明。
NodeList类中的⽅法介绍:
getLength()
获取对象中含有的所有Node节点的数量
item(int index)
传⼊index,会返回⼀个位于当前NodeList中位置为index的Node对象。
参考连接:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。