1. 程式人生 > >Java——JDOM方式生成XML

Java——JDOM方式生成XML

使用JDOM方式生成XML檔案的步驟如下:

  1. 建立根節點
  2. 建立Document物件,並將根節點傳入其構造方法中
  3. 建立子節點,使用setAttribute()方法為其設定屬性,使用setText()方法為其設定節點內容
  4. 使用父節點的setContent()方法為其設定子節點
  5. 建立XMLOutputter物件
  6. 使用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);