2014年12月31日10:47:53 天气晴
DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用的的特点,同时它也是一个开放源代码的软件。
它合并了许多超出基本XML文档的功能,包括集成了XPath支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。
如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun 的JACM 也在用DOM4J.
一.Dom4j解析编程步骤:
a.SAXReader reader = new SAXReader();
b.Document doc = reader.read(new FileInputStream("xml/student.xml"));
c.调用相关的API对该文档对象进行操作
二.案例
如果已知student.xml的文档结构,解析比较简单。在未知student.xml文档结构的情况下,利用递归的方法来做遍历
student.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="studentId">
<name>LGP</name>
<age>24</age>
</student>
</students>
ReadXmlFileByDom4j.java
package com.gditc.test;
import java.io.File;
import java.util.List;
<span style="color:#cc0000;">import org.dom4j.Document;</span>
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class ReadXmlFileByDom4j {
@SuppressWarnings("unchecked")
@Test
public void readXmlByDom4j() {
try {
SAXReader reader=new SAXReader();
//获得xml文件对应的文档树对象
Document doc = reader.read(new File("xml/student.xml"));
System.out.println("xml文档编码"+doc.getXMLEncoding());
Element root = doc.getRootElement();
System.out.println("根标签名:"+root.getName());
// List<Element> elements = root.elements();
// 方法一: 已知student.xml文档结构的情况下做的遍历
// for (Element element: elements) {
// List<Element> elements2 = element.elements();
// for (Element element2: elements2) {
// System.out.println(element2.getName()+":"+element2.getStringValue());
// }
// }
// 方法二:利用递归的原理来遍历元素
List<Element> elements = root.elements();
readChild(elements);
} catch (DocumentException e) {
e.printStackTrace();
}
}
<strong>@SuppressWarnings("unchecked")
public void readChild(List<Element> elements) {
for (Element element : elements) {
List<Element> childs = element.elements();
for (Element element2 : childs) {
System.out.println(element2.getName()+":"+element2.getText());
}
if (childs.size()>0) {
readChild(childs);
}
}
}</strong>
}
注意:Document对象是在org.dom4j包中,而不是org.w3c下。