Dom4j 解析(重點)

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下。


發佈了32 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章