首先是到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項目的使用,也成功完成了一個小小的應用。