操作XML-dom4j


首先是到dom4j的官網dom4j文件包,下載之后解壓如下所示。

在根目錄中,找到dom4j-1.6.1jar包,加入到eclipse中的lib文件下,最后build path一下,即可使用相關的方法。

1、創建XML文檔

1.1創建XML文檔對象

使用DocumentHelper類中的createDocument()方法,創建一個XML文檔對象,代碼如下:

Document document = DocumentHelper.createDocument();

另外也可以使用DocumentFactory對象也可以創建一個XML文檔對象。

DocumentFactory documentFactory=DocumentFactory.getInstance();

document=documentFactory.createDocument();

1.2創建根節點

(1)使用DocumentHelper對象的createElement()方法創建一個普通的節點信息。

public static Element createElement(String name)

(2)Document對象的setRootElement()方法

public void setRootElement(Element element) ;

例如:創建一個值 包括根節點的XmL文檔的具體代碼

  Document document = DocumentHelper.createDocument();
  Element rootElement = DocumentHelper.createElement("person");
  document.setRootElement(rootElement);
  rootElement.addComment("這是根節點");//添加注釋

2、解析XML文檔

(1)、加載XML文件

SAXReader saxReader =new SAXReader();

document = saxReader.read(new File(filename));

(2)、獲取根節點

Element root = dom.getRootElement();

(3)、遍歷節點信息

for (Iterator i =root.elementIterator(); i.hasNext();) {

  Element el =(Element) i.next();

  if(catNameEn.equals(el.elementTextTrim("engName"))){

    flag = false;

    break;

  }

}

 下面就以dom4j解析本博客的文章信息,

首先分析網頁的xml文件格式,打開本博客的“訂閱”鏈接,在網頁顯示xml文件格式如下:

 

然后在打開entry節點,如下所示:

分析一下:

1、要讀取網頁數據,首先需要創建一個URL對象,用本博客的“訂閱”鏈接創建URL對象,代碼如下:

URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
SAXReader reader = new SAXReader();
Document document = reader.read(url);

2、獲取XML文檔的根節點,確定根節點的數量,然后遍歷內容,代碼如下:

Element rootElement = document.getRootElement();
List list_item = rootElement.elements("entry");

3、遍歷XML文件的數據,代碼如下:

if (list_item.size() > 0) {
list = new ArrayList<Object>();
}
for (int i = 0; i < list_item.size(); i++) {
Element item = (Element) list_item.get(i);
System.out.println("id:" + item.element("id").getText());
System.out.println("title:" + item.element("title").getText());
System.out.println("summary:" + item.element("summary").getText());
System.out.println("published:" + item.element("published").getText());
System.out.println("updated:" + item.element("updated").getText());
System.out.println("name:" + item.element("author").element("name").getText());
System.out.println("uri:" + item.element("author").element("uri").getText());
System.out.println("************************");
System.out.println();
System.out.println();
System.out.println();
System.out.println();
}

最后整個測試代碼如下:

import java.io.File;
import java.io.FileWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/***
 * 使用dom4j開源項目,需要引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar包
 * 
 * @author ouxu
 *
 */
public class XmlHelper {
public void readXmlByUrl() throws Exception {
		List<Object> list;
		URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
		SAXReader reader = new SAXReader();
		Document document = reader.read(url);
		Element rootElement = document.getRootElement();
		List list_item = rootElement.elements("entry");
		if (list_item.size() > 0) {
			list = new ArrayList<Object>();
		}
		for (int i = 0; i < list_item.size(); i++) {
			Element item = (Element) list_item.get(i);
			System.out.println("id:" + item.element("id").getText());
			System.out.println("title:" + item.element("title").getText());
			System.out.println("summary:" + item.element("summary").getText());
			System.out.println("published:" + item.element("published").getText());
			System.out.println("updated:" + item.element("updated").getText());
			System.out.println("name:" + item.element("author").element("name").getText());
			System.out.println("uri:" + item.element("author").element("uri").getText());
			System.out.println("************************");
			System.out.println();
			System.out.println();
			System.out.println();
			System.out.println();
		}

	}

	public static void main(String[] args) {
		try {
			new XmlHelper().readXmlByUrl();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

測試代碼,運行通過,部分結果如下(由於數據比較多,一屏數據顯示不完)

 ok,目前,學習了dom4j項目的使用,也成功完成了一個小小的應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM