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對該文檔對象進行操作
二.案例
<?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>
}