1.概述
XML文件不仅可以用来交换数据,还可以作为配置文件。XML文件的解析一般有两种方式,即DOM方式和SAX方式。
2.DOM方式
DOM(Document Object Model)方式的思想是:首先将XML文件加载到内存中构建一棵DOM树,然后使用 DOM 接口来操作这个树结构进行解析。
- 优点:便于操作,支持增删改等多种操作
- 缺点:浪费时间和空间,当文档很大时可能造成内存溢出的问题
3.SAX方式
SAX方式基于事件驱动,逐行进行解析,当解析器发现元素、文本等的开始或结束时,会发送事件,程序员编写响应这些事件的代码并保存数据。
- 优点:无须事先加载整个文档,节约资源且不会产生内存溢出问题
- 缺点:不能对文档进行增删改等操作
4.DOM4J
dom4j是一个优秀的XML解析器,下面简单介绍它的使用。
4.1 jar包导入
使用dom4j解析XML文件首先需要下载并导入dom4j的jar包dom4j-1.6.1.jar。
4.2 解析实例
创建以下的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<books>
<book>
<name>java编程思想</name>
<category>编程技术</category>
</book>
<book>
<name>哈姆雷特</name>
<category>文学名著</category>
</book>
</books>
使用dom4j进行解析:
package dom4j;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
/**
* dom4j解析xml文件
* Created by lwyan on 2018/3/25.
*/
public class Demo {
/**
*获得元素内容
*/
@Test
public void test() throws Exception{
//创建解析器
SAXReader saxReader = new SAXReader();
//获得解析的XML文档
Document document = saxReader.read("src/dom4j/demo.xml");
//获得根节点元素
Element root = document.getRootElement();
//查找根节点下的所有子节点
List<Element> elements = root.elements();
for(Element element : elements){
//获得name节点
Element name = element.element("name");
//获得category节点
Element category = element.element("category");
System.out.println(name.getText()+":"+category.getText());
}
}
}
解析结果:
java编程思想:编程技术
哈姆雷特:文学名著
5.简单分析
- XML文档本身是一个Document对象
- XML的所有标签都是一个Element对象
- 根标签的获得方式为
document.getRootElement()
node.elements()
查找的是node
节点下的所有子节点- 获得具体某个元素内容的方法为
getText()