使用Dom4j创建xml文档
我们学习dom4j为的就是使用它来创建XML文档、读取文档等更为方便,下面通过一个实例来展示如何通过dom4j去创建XML文档。展示怎样通过两种方式去创建元素,可以直接通过addElement方法返回一个Element,也可以是DocumentHelper的createElement方法创建Element对象,属性、注释等也类似。
创建过程如下:
1、创建一个Document对象(即一个XML文档对象),如下:
| 
 1 
 | 
Document document = DocumentHelper.createDocument(); | 
通过上面这句定义一个 XML 文档对象。
2、在创建好的Document对象上面创建一个根节点(即XML的根节点),代码如下:
| 
 1 
 | 
Element root = document.addElement("根节点名称"); | 
通过这句定义一个 XML 元素,这里添加的是根节点。
Element 有几个重要的方法:
    addComment(String comment)   添加注释
addAttribute(QName qName, String value)
addAttribute(String name, String value) 添加属性
    addElement(String name) 添加子元素
3、最后通过 XMLWriter 生成物理文件,默认生成的 XML 文件排版格式比较乱,可以通过 OutputFormat 类格式化输出,默认采用 createCompactFormat()显示比较紧凑, 最好使用 createPrettyPrint()。
实例代码:
| 
 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 
58 
59 
60 
61 
62 
 | 
public class TestDom4j {    public static void main(String[] args) {        // 创建文档。        Document document = DocumentHelper.createDocument();        // 设置文档DocType,这里为了举例,添加hibernate的DocType        document.addDocType("hibernate-configuration",                "-//Hibernate/Hibernate Configuration DTD 3.0//EN",                "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd");        // 文档增加节点,即根节点,一个文档只能有一个根节点,多加出错        Element root = document.addElement("skills");        // 添加注释        root.addComment("第一个技能");        // 根节点下添加节点        Element first = root.addElement("skill");        // 节点添加属性        first.addAttribute("name", "独孤九剑");        // 节点下添加节点        Element info = first.addElement("info");        // 节点设置内容数据        info.setText("为独孤求败所创,变化万千,凌厉无比。其传人主要有风清扬、令狐冲。 ");                 // 同理增加其他节点,内容,属性等        Element second = root.addElement("skill");        second.addAttribute("name", "葵花宝典");                 Element info2 = second.addElement("info");        info2.setText("宦官所创,博大精深,而且凶险至极。练宝典功夫时,首先要自宫净身。 ");                 /**        * 第二种方法增加节点,内容,属性等。先创建节点,属性,然后使用add加入。        */        // 创建节点        Element third = DocumentHelper.createElement("skill");        // 将节点加入到根节点中        root.add(third);        // 创建属性,第一个参数指定了拥有者,也可以为null,指定拥有者        Attribute name = DocumentHelper.createAttribute(third, "name", "北冥神功");        // 将属性加入到节点上        third.add(name);        // 创建子节点并加入到节点中        Element info3 = DocumentHelper.createElement("info");        info3.setText("逍遥派的顶级内功之一,能吸人内力转化为自己所有,威力无穷。 ");        third.add(info3);                 try {            // 创建格式化类            OutputFormat format = OutputFormat.createPrettyPrint();            // 设置编码格式,默认UTF-8            format.setEncoding("UTF-8");            // 创建输出流,此处要使用Writer,需要指定输入编码格式,使用OutputStream则不用            FileOutputStream fos = new FileOutputStream("d:/skills.xml");            // 创建xml输出流            XMLWriter writer = new XMLWriter(fos, format);            // 生成xml文件            writer.write(document);            writer.close();        } catch (Exception e) {            e.printStackTrace();        }             }} | 
生成 XML 文件内容:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
 | 
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><skills>    <!--第一个技能-->    <skill name="独孤九剑">        <info>为独孤求败所创,变化万千,凌厉无比。其传人主要有风清扬、令狐冲。 </info>    </skill>    <skill name="葵花宝典">        <info>宦官所创,博大精深,而且凶险至极。练宝典功夫时,首先要自宫净身。 </info>    </skill>    <skill name="北冥神功">        <info>逍遥派的顶级内功之一,能吸人内力转化为自己所有,威力无穷。 </info>    </skill></skills>
  | 
                    
                
                
            
        
浙公网安备 33010602011771号