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