我们学习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>

 

使用Dom4j创建xml文档的更多相关文章

  1. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  2. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

  3. DOM4J解析XML文档

    Tip:DOM4J解析XML文档 Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM的人分离出来而后独立开发的.与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j ...

  4. 使用DOM4J解析XML文档,以及使用XPath提取XML文档

    使用DOM4J解析XML文档 需要首先下载DOM4J工具包.这是个第三方工具包 在使用DOM4J解析的时候需要导入 DOM4J的JAR包 下载DOM4J工具包->在MyEclipse中新建lib ...

  5. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  6. Java四种读取和创建XML文档的例子教程

    四种方法解析XML文档:Dom.SAX.JDOM.dom4j          1.了解XML XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集 ...

  7. dom4j读写XML文档

    dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...

  8. 使用DOM4J生成XML文档

    package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...

  9. C# 创建XML文档

    有些时候我们需要生成一个xml文档作为数据交换的容器.当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱.这时候就需要C#给 ...

随机推荐

  1. Android源码中final关键字的用法及final,finally,finalize的区别

    Android开发的学习流程 final,finally,finalize的区别 Android的发展越来越快,Android开发人员越来越多,当两种情况碰撞,在诸多开发者中跟紧Android步伐脱颖 ...

  2. .NET零基础入门09:SQL必知必会

    一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...

  3. [转]PHP中替换换行符

    FROM :http://www.cnblogs.com/siqi/archive/2012/10/12/2720713.html //php 有三种方法来解决 //1.使用str_replace 来 ...

  4. FinalizableReference, FinalizablePhantomReference, FinalizableReferenceQueue

    FinalizableReference /* * Copyright (C) 2007 The Guava Authors * * Licensed under the Apache License ...

  5. ASP.NET MVC:无法向会话状态服务器发出会话状态请求

    ylbtech-Error-ASP.NET MVC: 无法向会话状态服务器发出会话状态请求 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET ...

  6. Home Assistant 安装Samba和SSH server 插件

    安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享.打印机共享更容易实现. Smaba 服 ...

  7. hadoop 2.2搭建常见错误

    http://blog.csdn.net/haidao2009/article/details/14897813 hadoop 2.2 搭建 http://blog.csdn.net/pelick/a ...

  8. Java-JUC(二):Java内存模型可见性、原子性、有序性及volatile具有特性

    1.Java HotSpot JVM运行时数据区 Java内存模型即Java Memory Model,简称JMM.JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式.JVM是整 ...

  9. 整数对A满足二叉查找树,B满足最大堆

    1 题目 给出一组整数对 { (a[0], b[0]), (a[1], b[1]) ... (a[n-1], b[n-1]) },全部 a 值和 b 值分别不反复(随意 i != j 满足 a[i] ...

  10. 持续集成之代码质量管理-Sonar [三]

    转载:https://www.abcdocker.com/abcdocker/2053 摘要 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工 ...