Java——JDOM方式生成XML
阿新 • • 發佈:2019-02-01
使用JDOM方式生成XML檔案的步驟如下:
- 建立根節點
- 建立Document物件,並將根節點傳入其構造方法中
- 建立子節點,使用
setAttribute()
方法為其設定屬性,使用setText()
方法為其設定節點內容 - 使用父節點的
setContent()
方法為其設定子節點 - 建立XMLOutputter物件
- 使用XMLOutputter物件的
output()
方法將Document轉換成XML檔案
下面給出程式碼:
package util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom2.CDATA;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.EscapeStrategy;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class XMLUtils {
public void createXMLByJDOM(File dest) {
// 建立根節點
Element rss = new Element("rss");
// 為根節點設定屬性
rss.setAttribute("version", "2.0");
// 建立Document物件,併為其設定根節點
Document document = new Document(rss);
Element channel = new Element("channel");
Element title = new Element("title");
// 設定節點內容,使用此方法會自動對特殊符號進行轉義
// title.setText("<![CDATA[上海移動網際網路產業促進中心正式揭牌 ]]>");
// 設定CDATA型別的節點內容,使用此方法會自動在內容兩邊加上CDATA的格式
CDATA cdata = new CDATA("上海移動網際網路產業促進中心正式揭牌");
title.setContent(cdata);
channel.setContent(title);
rss.setContent(channel);
// 建立XMLOutputter物件
XMLOutputter outputter = new XMLOutputter();
try {
// 方法一:建立Format物件(自動縮排、換行)
Format format = Format.getPrettyFormat();
// 為XMLOutputter設定Format物件
outputter.setFormat(format);
// 方法二:建立Format物件,並設定其換行
// Format format = Format.getCompactFormat();
// format.setIndent("");
// 將Document轉換成XML
outputter.output(document, new FileOutputStream(dest));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在使用JDOM生成XML時,可自行指定其輸出格式,有兩種方法可選。
方法一:
//方法一:建立Format物件(自動縮排、換行)
Format format = Format.getPrettyFormat();
//為XMLOutputter設定Format物件
outputter.setFormat(format);
方法二:
//方法二:建立Format物件,並設定其換行
Format format = Format.getCompactFormat();
format.setIndent("");
JDOM也會自動將特殊符號進行轉義。若內容為CDATA資料,可建立一個CDATA物件,再將該物件設為子節點即可。這樣,特殊符號不會進行自動轉義。
//設定CDATA型別的節點內容,使用此方法會自動在內容兩邊加上CDATA的格式
CDATA cdata = new CDATA("上海移動網際網路產業促進中心正式揭牌");
title.setContent(cdata);