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