使用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://blog.ytso.com/tech/pnotes/15960.html

(0)
上一篇 2021年7月19日 18:52
下一篇 2021年7月19日 18:52

相关推荐

发表回复

登录后才能评论