上一篇讲了Java中如何操作XML,现在介绍一个更厉害的方法,Dom4j ,百度查一下就知道,这个更强,更快,更简单。
自己下载jar包导入工具,下面来讲一个例子,我事先准备了一个XML文件,如下:
<?xml version="1.0" encoding="utf-8" ?>
<Loves>
<love>
<name>许嵩</name>
<age>32</age>
</love>
<love>
<name>林俊杰</name>
<age>33</age>
</love>
</Loves>
一、使用Dom4j读取XML文件的内容
package com.StadyJava.Dom4jDemo; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import java.io.File;
import java.util.List; public class test { public static void main(String[] args) throws Exception{
Dom4j(); }
private static File file=new File("F:\\Study Java\\ch1helloworld\\src\\main\\java\\com\\StadyJava\\Dom4jDemo\\Love.xml"); public static void Dom4j() throws Exception{
//获取文档对象
SAXReader reader=new SAXReader();
Document doc=reader.read(file);
//获取根元素
Element root=doc.getRootElement();
//获取所有的子元素Love
List<Element> lovelist = root.elements("love");
//输入name元素的内容
for (Element element : lovelist) {
System.out.println(element.elementTextTrim("name"));
System.out.println("---------------");
} } }
二、使用Dom4j对XML新增一些内容
package com.StadyJava.Dom4jDemo; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import java.io.File;
import java.io.FileWriter;
import java.io.OutputStream;
import java.util.List; public class test { public static void main(String[] args) throws Exception{
Dom4jAdd(); }
private static File file=new File("F:\\Study Java\\ch1helloworld\\src\\main\\java\\com\\StadyJava\\Dom4jDemo\\Love.xml"); public static void Dom4jAdd() throws Exception{
//获取文档对象
SAXReader reader=new SAXReader();
Document doc=reader.read(file);
//获取根元素
Element root=doc.getRootElement();
//创建一个love元素,作为根元素的子元素
Element lovenew=root.addElement("love");
//Element lovenew=root.addElement("love").addAttribute("id","1"); 如果你的love元素有属性,可以这样写
//为love新元素添加name、age元素并且赋值
lovenew.addElement("name").setText("蜀云泉");
lovenew.addElement("age").setText("23"); //在内存里面的XML已经完成,现在同步内存到磁盘,同步到磁盘有两种方式:第一种都在一行,可读性差,但是没有了空格和换行,性能占优。 第二种,拥有漂亮的格式,有换行和空格,可读性强。二选一
//同步第一种,都在一行,优点:性能 缺点:可读性差
FileWriter out =new FileWriter(file);
doc.write(out);
out.close();//关闭流,如果不关闭,那么你的XML文件会变空 //同步第二种,有格式,优点:可读性强 缺点:性能差一点
OutputFormat format=OutputFormat.createPrettyPrint();
XMLWriter writer=new XMLWriter(new FileWriter(file),format);
writer.write(doc);
writer.close();//任何时候都不要忘记关闭流 } }