您的位置:首页 > 编程语言 > Java开发

使用Dom4j创建一个XML文件

2016-09-07 22:04 447 查看
以创建下面样式的xml为例

<?xml version="1.0" encoding="UTF-8"?>

<users>

  <user name="tom">26.5</user>

  <user name="jack" id="0001">126.5</user>

  <user name="ody">95.5</user>

  <school name="cslg" id="01">常熟理工学院</school>

</users>

先来看看dom4j提供的官方api中创建文档的代码




org.dom4j.DocumentHelper类






org.dom4j.DocumentHelper类中有createDocument,返回一个Document类对象

这个方法有两个重载方法。一个无参方法,一个有参方法,参数为Element类型。有参方法指定根标签名。



若你调用createDocument的无参方法创建Document对象后,需要先创建一个根标签.可使用Document对象的addElement方法。



addElement是Document是从父类接口Branch中继承而来的方法。



addElement()有三个重载的方法。返回的都是Element对象。你可根据需要自行选择。String  name指定标签名



若你调用的是createDocument的有参方法,在构建的时候就指定了根标签名,就可省去上面的一步操作。

 

创建好根标签之后,就可以在根标签下面添加子标签了。(设置根标签的时候返回的是一个Element对象)



可见接口Element也是继承了接口Branch,所以它也会有addElement()方法,可调用这个方法为指定标签添加子标签。(哪个标签的对象调用了这个方法,就是在哪个标签下面添加子标签)

 

给标签添加属性(addAttribute()).

调用addElement()方法给该标签添加属性。该方法有两个重载的方法。都是两个参数的。第一个参数指定标签名(key),第二个参数指定标签值(value)。该方法的返回值也是一个Element类型的对象。



因为addAttribute()方法的返回值仍然是一个Element对象,所以认可继续调用addAttribute()方法给该标签添加多个属性,例如,给<user>添加name和id属性:

element.addAttribute(“name”,”张三”).addAttribute(“id”,”01”);

 

就这样追加下去。当然也可以设置文本域内容了.

 

设置文本域(addText())。调用addText()方法。String text设置文本域的内容。该方法也是返回一个Element对象。



Dom4j的方便之处就是无论添加标签,标签属性,文本域结构都是返回的是Element对象。这样就给设置这些内容带来了很多方便之处。Dom4j的设计者真是别出心裁。

 

 

好了,上述便完成了创建一个简单的XML文档的操作。

 

创建好了之后,这些都扔停留在内存中。接下来,就是将内存中的XML写到本地的文件中了。Dom4j也提供了很好的api来写文件.



写文件要用到org.dom4j.io.XMLWriter这个类



使用OutputFormat类可以设置输出格式,及按照某种格式写出.



该类提供了两种写入方式:一种是漂亮的格式,即缩进,空格,换行良好。还有一种是紧凑的格式,即不换行,都是一行显示。

静态方法,可直接用类名调用.



创建好OutputFormat对象之后,在创建一个输出流,传入XMLWriter方法中。

调用XMLWriter的writer()方法,传入一个Document对象,运行之后即可完成写入








示例源代码:

public static void main(String[]
args) {

    //使用DocumentHelper创建一个空的Document文本对象

Document document =
DocumentHelper.createDocument();

//使用addElement方法添加一个根标签<user>

Element element =
document.addElement("users");

//依次添加标签

element.addElement("user").addAttribute("name",
         "tom").addText("26.5");


element.addElement("user").addAttribute("name",
"jack").addAttribute("id",
"0001").addText("126.5");

element.addElement("user").addAttribute("name",
"tom").addText("29.5");

element.addElement("user").addAttribute("name",
"terry").addText("66.5");

element.addElement("user").addAttribute("name",
"marry").addText("29.5");

element.addElement("user").addAttribute("name",
"ody").addText("95.5");

element.addElement("user").addAttribute("name",
"tom").addText("46.5");

element.addElement("school").addAttribute("name",
"cslg").addAttribute("id",
"01").addText("常熟理工学院");

       // 格式良好的

OutputFormat format = OutputFormat.createPrettyPrint();

/*格式紧凑的

OutputFormat format = OutputFormat.createCompactFormat();*/

try {

XMLWriter writer = new XMLWriter(new FileOutputStream("src/test/day0905/Demo8.xml"), format);

           

    writer.write(document);

} catch (UnsupportedEncodingException | FileNotFoundException
e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException
e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

格式漂亮的输出结果:



格式紧凑的输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java dom4j 编程 dom