dom4j

Dom4j是什么DD?

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件dom4j需要导入dom4j-full.jar包.

Dom4j家庭成员

主要API都在org.dom4j这个包里定义:

1.Attribute Attribute定义了XML的属性

2.Branch Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为, 
       3.CDATA CDATA 定义了XML CDATA 区域 
       4.CharacterData CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text. 
       5. Comment Comment 定义了XML注释的行为

6. Document 定义了XML文档

7.DocumentType DocumentType 定义XML DOCTYPE声明

8. Element Element定义XML 元素

9.   ElementHandler ElementHandler定义了 Element 对象的处理器 
      10.  ElementPath 被 ElementHandler 使用,用于取得当前正在处理的路径层次信息

11.  Entity Entity定义 XML entity 
      12.  Node Node为所有的dom4j中XML节点定义了多态行为

13.  NodeFilter NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)

14.  ProcessingInstruction ProcessingInstruction 定义 XML 处理指令.

15.  Text Text 定义XML 文本节点.

16.  Visitor Visitor 用于实现Visitor模式.

17.  XPath XPath 在分析一个字符串后会提供一个XPath 表达式

Dom4j如何干活?

1.利用dom4j创建一个XML文件:

 1 package com.xml;
 2
 3 import java.io.FileWriter;
 4 import java.io.IOException;
 5
 6 import org.dom4j.Document;
 7 import org.dom4j.DocumentHelper;
 8 import org.dom4j.Element;
 9 import org.dom4j.io.OutputFormat;
10 import org.dom4j.io.XMLWriter;
11
12 public class CreateXML {
13
14 public static void main(String[] args) {
15         XMLWriter writer = null;
16         try {
17             // 1.document构建器
18             Document doc = DocumentHelper.createDocument();
19             // 2.添加元素(根)
20             Element students = doc.addElement("students");
21             Element student1 = students.addElement("student");
22             // 添加属性;
23             student1.addAttribute("stuno", "s001");
24             // 添加子元素
25             student1.addElement("stuname").setText("刘光蓝");
26             student1.addElement("stusex").setText("男");
27             student1.addElement("stuage").setText("25");
28             //设置输出格式
29             OutputFormat format=OutputFormat.createPrettyPrint();
30             format.setEncoding("UTF-8");
31             writer = new XMLWriter(new FileWrite("d:/student.xml"),format);
32             writer.write(doc);
33             System.out.println("生成XML成功!");
34         } catch (Exception e) {
35             e.printStackTrace();
36         } finally {
37             try {
38                 writer.close();
39             } catch (IOException e) {
40                 // TODO Auto-generated catch block
41                 e.printStackTrace();
42             }
43         }
44
45     }
46
47 }  

  

 1 package com.xml;
 2
 3 import java.io.FileWriter;
 4 import java.io.IOException;
 5
 6 import org.dom4j.Document;
 7 import org.dom4j.DocumentHelper;
 8 import org.dom4j.Element;
 9 import org.dom4j.io.OutputFormat;
10 import org.dom4j.io.XMLWriter;
11
12 public class CreateXML {
13
14 public static void main(String[] args) {
15   XMLWriter writer = null;
16   try {
17    // 1.document构建器
18    Document doc = DocumentHelper.createDocument();
19    // 2.添加元素(根)
20    Element students = doc.addElement("students");
21    Element student1 = students.addElement("student");
22    // 添加属性;
23    student1.addAttribute("stuno", "s001");
24    // 添加子元素
25    student1.addElement("stuname").setText("刘光蓝");
26    student1.addElement("stusex").setText("男");
27    student1.addElement("stuage").setText("25");
28    //设置输出格式
29    OutputFormat format=OutputFormat.createPrettyPrint();
30    format.setEncoding("UTF-8");
31    writer = new XMLWriter(new FileWrite("d:/student.xml"),format);
32    writer.write(doc);
33    System.out.println("生成XML成功!");
34   } catch (Exception e) {
35    e.printStackTrace();
36   } finally {
37    try {
38     writer.close();
39    } catch (IOException e) {
40     // TODO Auto-generated catch block
41     e.printStackTrace();
42    }
43   }
44
45  }
46
47 }

2.利用dom4j读取一个XML文件:

 1 package com.xml;
 2
 3 import java.io.File;
 4 import java.util.List;
 5
 6 import org.dom4j.Document;
 7 import org.dom4j.Element;
 8 import org.dom4j.Node;
 9 import org.dom4j.io.SAXReader;
10
11 public class ReaderXML {
12     public static void main(String[] args) {
13           try {
14         SAXReader saxReader=new SAXReader();
15         Document doc=saxReader.read(new File("d:/student.xml"));
16         //利用XPath来访问元素,属性
17         //  /students/student[1] 指定某个元素
18         //  /students/student/@stuno 指定某个属性
19         //  /students/student[@stuno=‘s002‘]做判断
20         List<Node> data=doc.selectNodes("/students/student");
21         for(Node node:data){
22               //node.asXML() 以字符串的格式打印XML
23               if("Element".equals(node.getNodeTypeName())){
24                 Element element=(Element)node;
25                 //读取属性值
26                 System.out.println(element.attributeValue("stuno"));
27                 //读取子元素文本值
28                 System.out.println(element.elementText("stuname"));
29                 System.out.println(element.elementText("stusex"));
30                 System.out.println(element.elementText("stuage")+"\n");
31                 }
32             }
33         } catch (Exception e) {
34             e.printStackTrace();
35         }
36     }
37
38 }  
 1 package com.xml;
 2
 3 import java.io.File;
 4 import java.util.List;
 5
 6 import org.dom4j.Document;
 7 import org.dom4j.Element;
 8 import org.dom4j.Node;
 9 import org.dom4j.io.SAXReader;
10
11 public class ReaderXML {
12  public static void main(String[] args) {
13        try {
14   SAXReader saxReader=new SAXReader();
15   Document doc=saxReader.read(new File("d:/student.xml"));
16   //利用XPath来访问元素,属性
17   //  /students/student[1] 指定某个元素
18   //  /students/student/@stuno 指定某个属性
19   //  /students/student[@stuno=‘s002‘]做判断
20   List<Node> data=doc.selectNodes("/students/student");
21   for(Node node:data){
22         //node.asXML() 以字符串的格式打印XML
23         if("Element".equals(node.getNodeTypeName())){
24     Element element=(Element)node;
25     //读取属性值
26     System.out.println(element.attributeValue("stuno"));
27     //读取子元素文本值
28     System.out.println(element.elementText("stuname"));
29     System.out.println(element.elementText("stusex"));
30     System.out.println(element.elementText("stuage")+"\n");
31     }
32    }
33   } catch (Exception e) {
34    e.printStackTrace();
35   }
36  }
37
38 }

3.利用dom4j修改一个XML文件:

 1 package com.xml;
 2
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 import java.util.List;
 7
 8 import org.dom4j.Document;
 9 import org.dom4j.Element;
10 import org.dom4j.Node;
11 import org.dom4j.io.OutputFormat;
12 import org.dom4j.io.SAXReader;
13 import org.dom4j.io.XMLWriter;
14
15 public class UpdateXMLData {
16
17      public static void main(String[] args) {
18         XMLWriter writer = null;
19         try {
20             SAXReader saxReader = new SAXReader();
21             Document doc = saxReader .read(new File("d:/student.xml"));
22             List<Node> data = doc
23                     .selectNodes("/students/student[@stuno=‘s002‘]");
24             for (Node node : data) {
25                 if ("Element".equals(node.getNodeTypeName())) {
26                     Element temp = (Element) node;
27                                         //修改student的stuno属性值
28                     temp.setAttributeValue("stuno", "stu002");
29                 }
30             }
31             OutputFormat format = OutputFormat.createPrettyPrint();
32             format.setEncoding("UTF-8");
33             writer = new XMLWriter(new FileWriter("d:/student.xml"), format);
34             writer.write(doc);
35             System.out.println("修改成功!");
36         } catch (Exception e) {
37             e.printStackTrace();
38         } finally {
39             try {
40                 writer.close();
41             } catch (IOException e) {
42                 // TODO Auto-generated catch block
43                 e.printStackTrace();
44             }
45         }
46
47     }
48
49 } 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yueye729107/archive/2010/01/29/5269887.aspx

时间: 2024-10-11 00:47:46

dom4j的相关文章

【dom4j】解析xml为map

dom4j解析xml文件 <?xml version="1.0" encoding="utf-8"?> <workflows> <queryRequest> <branchId>88037062</branchId> <merSysId>00000317</merSysId> <queryNo>948983692</queryNo> <billType&

dom4j API使用简介

功能简介 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它.在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能.功能和易用性的评测,dom4j无论在那个方面都是非常出色的.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得

使用Dom4j操作XML数据

--------------siwuxie095 dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 XML 数据 特点:性能优异.功能强大.极端易用 dom4j 的下载链接:http://www.dom4j.org/dom4j-1.6.1/ 将 dom4j-1.6.1.zip 解压一览: 工程名:TestDom4j 包名:com.siwuxie095.dom4j 类名:Test.java 打开资源管理器,在工程 TestDom4j 文件夹下,创建一个

【收藏用】--切勿转载JAVA 使用Dom4j 解析XML

原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载dom4j-1.6.1.jar (2)下载junit-4.10.jar 2.温馨提示 解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来,有三种方式: (1)自己创建Document对象   Document docu

javaweb学习总结十三(dom4j方式对XML文档进行解析)

一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企业使用比较多的一种方式 二:代码案例 1:读取xml文件中某个节点 1):获取第二个学生的名字 1 @Test 2 // 1:获取第二个学生的名字 3 public void test01() throws DocumentException { 4 // 1:获取解析器 5 SAXReader r

Day06 DOM4J&schema介绍&xPath

day06总结 今日内容 XML解析之JAXP( SAX ) DOM4J Schema ? 三.XML解析器介绍 ? 操作XML文档概述 ? 1 如何操作XML文档 XML文档也是数据的一种,对数据的操作也不外乎是"增删改查".也被大家称之为"CRUD". C:Create: R:Retrieve: U:Update: D:Delete ? 2 XML解析技术 XML解析方式分为两种:DOM(Document Object Model)和SAX(Simple API

dom、SAX、Jdom、dom4j四种解析xml方式简单总结

1,dom和sax是java官方提供的解析方式,不需要导入额外jar包,dom甚至一种标准. dom是一次性将整个xml文件dom结构加载进内存,因此比较占空间. 优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改 缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出. 2,sax是一种基于事件驱动的xml解析方式.在使用是需要编写专门的handler,在文档开头会触发startDocument()方法.解析到节点除法startEl

解析XML文件的几种常见操作方法:DOM/SAX/DOM4j

1 <?xml version="1.0" encoding="utf-8"?> 2 <root> 3 <class name="class1"> 4 <student> 5 <name>张三</name> 6 <age>20</age> 7 <sex>男</sex> 8 </student> 9 <stude

[JavaWeb基础] 031.dom4j写入xml的方法

上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws Exception { // 创建文档 Document document = DocumentHelper.createDocument(); // 设置编码 document.setXMLEncoding("GBK"); // 创建根节点 Element root = document.