dom4j demo

转自:http://www.cnblogs.com/gyouxu/p/3869029.html

首先是到dom4j的官网dom4j文件包,下载之后解压如下所示。

dom4j demo_第1张图片

在根目录中,找到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文件格式如下:

 dom4j demo_第2张图片

然后在打开entry节点,如下所示:

dom4j demo_第3张图片

分析一下:

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();
}
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();
}

最后整个测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"color: #339966;" > 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 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();
         }
         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();
         }
     }
}

测试代码,运行通过,部分结果如下(由于数据比较多,一屏数据显示不完)

dom4j demo_第4张图片

 ok,目前,学习了dom4j项目的使用,也成功完成了一个小小的应用。

你可能感兴趣的:(java)