天天看點

JavaEE XML DOM建立之DOM4JDOM4J建立xml文檔

DOM4J建立xml文檔

 @author ixenos

              1 寫出内容到xml文檔

                                    XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)

                                    wirter.write(Document);

      

            OutputFormat format = OutputFormat.createPrettyPrint();

            format.setEncoding("GBK");

            // 生成xml檔案

            File file = new File("rssnews.xml");

            XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);

            //設定是否轉義,預設值是true,代表轉義

            writer.setEscapeText(false);

            writer.write(document);

            writer.close();

              2 修改xml文檔的API

                           增加:

                                             DocumentHelper.createDocument()  增加文檔

                                             addElement("名稱")  增加标簽

                                             addAttribute("名稱",“值”)  增加屬性

                           修改:

                                             Attribute.setValue("值")  修改屬性值

      //addAttribute為标簽添加屬性和屬性值。根據XML約定,若value為null,則attr屬性不存在,這可用于删除屬性

                                             Element.addAtribute("同名的屬性名","值")  修改同名的屬性值

                                             Element.setText("内容")  修改文本内容

                           删除

                                             Element.detach();  删除标簽 

                                             Attribute.detach();  删除屬性

示例

package com.ixenos.dom4j;

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.XMLWriter;

/**
 * 使用DOM4J的API生成XML檔案
 * 
 * @author ixenos
 *
 */
public class CreateXML {

	/**
	 * 封裝DOM樹
	 * 
	 * @param file
	 * @throws Exception
	 */
	public Document getDOM() throws Exception {
		// 生成一個空的Document對象
		Document doc = DocumentHelper.createDocument();

		// 手動裝入标簽、屬性、文本
		// 根标簽
		Element rootE = doc.addElement("Students");

		// 第一個子标簽
		Element firE = rootE.addElement("Student");
		firE.addAttribute("id", "1");
		// 第一個子标簽的子
		firE.addElement("name").addText("張三");
		firE.addElement("gender").addText("男");
		firE.addElement("grade").addText("物聯網一般");
		firE.addElement("address").addText("廣州白雲");

		// 第二個子标簽
		Element secE = rootE.addElement("Student");
		secE.addAttribute("id", "2");
		// 第一個子标簽的子
		secE.addElement("name").addText("李四");
		secE.addElement("gender").addText("女");
		secE.addElement("grade").addText("物聯網二班");
		secE.addElement("address").addText("廣州海珠");
		return doc;
	}

	/**
	 * 将DOM樹輸出為XML檔案
	 * 
	 * @throws Exception
	 */
	public static void writeXML(Document doc, Boolean pretty, String encoding) throws Exception {
		// 建立檔案輸出流,定向所要生成的檔案路徑
		FileOutputStream out = new FileOutputStream("demo.xml");
		
		// 建立OutputFormat,作為寫到XML的格式化選項
		// 為了調試可視化,我們需要OutputFormat.createPrettyPrint()
		// 為了傳輸的高效化,我們需要Outputormat.create.createCompactFormat()
		OutputFormat format = null;
		if (pretty) {
			format = OutputFormat.createPrettyPrint();
		} else {
			format = OutputFormat.createCompactFormat();
		}
		// 設定XML檔案指定編碼
		format.setEncoding(encoding);

		// 建立XMLWriter,将DOM樹寫到XML中,注意格式化問題
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(doc);
		writer.close();
	}

	public static void main(String[] args) throws Exception {
		CreateXML demo = new CreateXML();
		//生成DOM樹
		Document doc = demo.getDOM();
		//根據DOM樹生成XML
		writeXML(doc, true, "utf-8");
	}

}
           

  

<?xml version="1.0" encoding="utf-8"?>

<Students>
  <Student id="1">
    <name>張三</name>
    <gender>男</gender>
    <grade>物聯網一般</grade>
    <address>廣州白雲</address>
  </Student>
  <Student id="2">
    <name>李四</name>
    <gender>女</gender>
    <grade>物聯網二班</grade>
    <address>廣州海珠</address>
  </Student>
</Students>
           

  

轉載于:https://www.cnblogs.com/ixenos/p/6282561.html