使用DOM4J生成XML檔案
阿新 • • 發佈:2019-01-11
生成XMLW檔案需要獲取Document物件,獲取該物件有2種方式:
(1)通過讀取原有的xml檔案獲取document物件SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File("data.xml"));(2)通過DocumentHelper建立一個document物件//建立一個根節點Element rootElement = DocumentHelper.createElement("書架");//建立的document物件.Document document = DocumentHelper.createDocument(rootElement);除此之外,還需要通過XMLWriter來完成寫入操作.
下面分別通過Demo來演示
package dom4j; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 讀取目標xml的document生成xml檔案 相當於copy了一個document * 你可以對該document進行擴充和修改 * * @author mChenys * */ public class WriteCopy { public static void main(String[] args) throws Exception { // 讀取源xml檔案獲取一個document物件。 SAXReader saxReader = new SAXReader(); Document source = saxReader.read(new File("./src/person.xml")); // 獲取到Document物件後,就可以操作Element了 // 獲取根標籤 Element rootEle = source.getRootElement(); // 新增一個person子標籤 Element personEle = DocumentHelper.createElement("person"); // 新增一個屬性 personEle.addAttribute("id", "330"); // 新增一個name子標籤 Element nameEle = DocumentHelper.createElement("name"); // 新增標籤值 nameEle.setText("王五"); // 將name標籤新增到person標籤中 personEle.add(nameEle); // 將person標籤新增到根標籤中 rootEle.add(personEle); // 建立xml輸出格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 設定xml輸出編碼格式 format.setEncoding("gbk"); // 使用XMLWriter物件生成一個xml檔案 XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("./src/copy_person.xml"), format); // 把document寫出到目標檔案上 xmlWriter.write(source); // 關閉資源 xmlWriter.close(); } }
package demo2; import java.io.FileWriter; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * 手動建立document生成xml檔案 * * @author mChenys * */ public class CreateXml { public static void main(String[] args) throws IOException { // 建立一個根標籤 Element rootEle = DocumentHelper.createElement("書架"); // 根據根節點建立的document物件. Document document = DocumentHelper.createDocument(rootEle); // 在根節點上新增子標籤。 Element bookEle = rootEle.addElement("書"); // 繼續新增孫標籤 bookEle.addElement("名字").setText("三國演義"); bookEle.addElement("價錢").setText("43.8"); bookEle.addElement("出版社").setText("清華出版社"); // 如果需要指定文件宣告的encoding編碼表,那麼需要建立一個xml輸出的格式器 // 漂亮的格式 平時檢視檔案的時候使用的。 OutputFormat prettyPrint = OutputFormat.createPrettyPrint(); // 緊湊的格式 這種格式一般用於網路傳輸資料的時候使用。 // OutputFormat compactFormat = OutputFormat.createCompactFormat(); // 指定文件宣告的encoding prettyPrint.setEncoding("gbk"); // 使用document生成xml檔案 FileWriter fileWriter = new FileWriter("books.xml"); XMLWriter xmlWriter = new XMLWriter(fileWriter, prettyPrint); xmlWriter.write(document); // 關閉資源 xmlWriter.close(); } }