先獲取到節點,然后在節點山添加Element
添加節點 添加屬性 設置開始標簽與結束標簽的值
book.addElement("描述").addAttribute("name", "xxxxxx").setText("一本好書!");
解決中文亂碼問題:
輸出流最好用字節流(Stream),字節流可以控制編碼格式,Writer是字符流。
如果xml中編碼是utf-8,格式器也用utf-8。格式器與xml文檔的編碼格式要一致。
1 package Dom4j_XMLParser; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.FileWriter; 6 7 import org.dom4j.Attribute; 8 import org.dom4j.Document; 9 import org.dom4j.DocumentException; 10 import org.dom4j.Element; 11 import org.dom4j.io.OutputFormat; 12 import org.dom4j.io.SAXReader; 13 import org.dom4j.io.XMLWriter; 14 import org.junit.Test; 15 16 public class Demo2 { 17 18 // 在第一本書后增加一個 <描述 name="xxxxxx">一本好書!</描述> 19 @Test 20 public void test1() throws Exception { 21 // 創建SAX讀取器 22 SAXReader reader = new SAXReader(); 23 // 加載文檔 24 Document document = reader.read(new File("src/book.xml")); 25 // 獲取根節點(書架) 26 Element root = document.getRootElement(); 27 // 獲取根節點下的書節點,帶s返回一個數組,再取數組的第二個 28 Element book = (Element) root.elements("書").get(0); 29 // 獲取樹下面的書名屬性 30 book.addElement("描述").addAttribute("name", "xxxxxx").setText("一本好書!"); 31 32 // 格式化輸出流,同時指定編碼格式。也可以在FileOutputStream中指定。 33 OutputFormat format = OutputFormat.createPrettyPrint(); 34 format.setEncoding("utf-8"); 35 36 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format); 37 writer.write(document); 38 writer.close(); 39 } 40 41 }
結果: