1. 程式人生 > >使用DOM4J生成XML檔案

使用DOM4J生成XML檔案

生成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();
	}

}