上一篇講了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();//任何時候都不要忘記關閉流 } }
