DOM4J解析

     特征:

      1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

      2、它使用接口和抽象基本类方法。

      3、具有性能优异、灵活性好、功能强大和极端易用的特点。

      4、是一个开放源码的文件

jar包:dom4j-1.6.1.jar

创建 book.xml:

 1 package com.example.xml.dom4j;
 2 
 3 import java.io.FileWriter;
 4 import org.dom4j.Document;
 5 import org.dom4j.DocumentHelper;
 6 import org.dom4j.Element;
 7 import org.dom4j.io.OutputFormat;
 8 import org.dom4j.io.XMLWriter;
 9 /**
10  * dom4j创建xml文档示例
11  *
12  */
13 public class Dom4JTest4 {
14     public static void main(String[] args) throws Exception {
15         // 第二种方式:创建文档并设置文档的根元素节点
16         Element root2 = DocumentHelper.createElement("bookstore");
17         Document document2 = DocumentHelper.createDocument(root2);
18 
19         // 添加一级子节点:add之后就返回这个元素
20         Element book1 = root2.addElement("book");
21         book1.addAttribute("id", "1");
22         book1.addAttribute("name", "第一本书");
23         // 添加二级子节点
24         book1.addElement("name").setText("遇见未知的自己");
25         book1.addElement("author").setText("张德芬");
26         book1.addElement("year").setText("2014");
27         book1.addElement("price").setText("109");
28         // 添加一级子节点
29         Element book2 = root2.addElement("book");
30         book2.addAttribute("id", "2");
31         book2.addAttribute("name", "第二本书");
32         // 添加二级子节点
33         book2.addElement("name").setText("双城记");
34         book2.addElement("author").setText("狄更斯");
35         book2.addElement("year").setText("2007");
36         book2.addElement("price").setText("29");
37         
38         // 设置缩进为4个空格,并且另起一行为true
39         OutputFormat format = new OutputFormat("    ", true);
40  
41         // 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白
42         XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("book.xml"),format);
43         xmlWriter3.write(document2);
44         xmlWriter3.flush();
45         // close()方法也可以
46 
47     }
48 }

运行结果:

解析 book.xml:

 1 package com.example.xml.dom4j;
 2 
 3 import java.io.File;
 4 import java.util.Iterator;
 5 import java.util.List;
 6 import org.dom4j.Attribute;
 7 import org.dom4j.Document;
 8 import org.dom4j.DocumentException;
 9 import org.dom4j.Element;
10 import org.dom4j.io.SAXReader;
11 /**
12  * dom4j解析xml文档示例
13  *
14  */
15 public class Dom4JTest3 {
16     
17     public static void main(String[] args) {
18         // 解析books.xml文件
19         // 创建SAXReader的对象reader
20         SAXReader reader = new SAXReader();
21         try {
22             // 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
23             Document document = reader.read(new File("book.xml"));
24             // 通过document对象获取根节点bookstore
25             Element bookStore = document.getRootElement();
26             System.out.println("根节点名:"+bookStore.getName());
27             // 通过element对象的elementIterator方法获取迭代器
28             Iterator it = bookStore.elementIterator();
29             // 遍历迭代器,获取根节点中的信息(书籍)
30             while (it.hasNext()) {
31                 System.out.println("=====开始遍历子节点=====");
32                 Element book = (Element) it.next();
33                 System.out.println("子节点名:"+book.getName());
34                 // 获取book的属性名以及 属性值
35                 List<Attribute> bookAttrs = book.attributes();
36                 for (Attribute attr : bookAttrs) {
37                     System.out.println("属性名:" + attr.getName() + "--属性值:"
38                             + attr.getValue());
39                 }
40                 Iterator itt = book.elementIterator();
41                 while (itt.hasNext()) {
42                     Element bookChild = (Element) itt.next();
43                     System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue());
44                 }
45                 System.out.println("=====结束遍历该节点=====");
46             }
47         } catch (DocumentException e) {
48             e.printStackTrace();
49         }
50     }
51 
52 }

运行结果:

posted on 2017-06-14 15:36  黑仔002  阅读(448)  评论(0编辑  收藏  举报