7
8
9 FrameWork
10 20
11 new book
12
13
整个xml文件是一个文档(document),其中第1行表示文件头,在第2和第13行里,我们能看到配套出现的books标签,从标签头到标签尾的部分那我们称之为元素(element)。
所以我们可以这样说,在books元素里,我们分别于第3到第7行和第8到第12行定义了2个book元素,在每个book元素,比如从第4到第6行,又包含着3个元素,比如第一本书的name元素是Java,它的name元素值是Java。
在第3行里,我们还能看到元素里的属性(attribute),比如这个book元素具有id这个属性,具体id的属性值是01。
2 基于DOM树的解析方式
DOM是Document Object Model(文档对象模型)的缩写,在基于DOM树的解析方式里,解析代码会先把xml文档读到内存里,并整理成DOM树的形式,随后再读取。根据之前部分里给出的book.xml文档,我们可以绘制出如下形式的DOM树。
其中,books属于根(root)结点,也叫根元素,由于它包含着两个book元素,所以第二层是两个book结点,每个book元素包含着3个元素,所以第三层是6个元素。在下面的ParserXmlByDom.java的代码里,我们来看下通过DOM树方式解析book.xml文档的详细步骤。
1 //省略import相关类库的代码
2 public class ParserXmlByDom {
3 public static void main(String[] args) {
4 //创建DOM工厂
5 DocumentBuilderFactory domFactory=DocumentBuilderFactory.newInstance();
6 InputStream input = null;
7 try {
8 //通过DOM工厂获得DOM解析器
9 DocumentBuilder domBuilder=domFactory.newDocumentBuilder();
10 //把XML文档转化为输入流
11 input=new FileInputStream(“src/book.xml”);
12 //解析XML文档的输入流,得到一个Document
13 Document doc=domBuilder.parse(input);
从第5行到第13行,我们完成了用DOM树解析XML文件的准备工作,具体包括,在第5行里创建了DOM工