• 使用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 DTD
    3.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>

     

  • 相关阅读:
  • 原文地址:https://www.cnblogs.com/frankyou/p/7121266.html
  • 最新文章
  • 热门文章
一二三 - 开发者的网上家园