package util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.StringReader;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
* JDOM 方式操作XML
*
* @author Watson Xu
* @date 2011-5-3 下午02:20:49
*/
public class OperationXMLByJdom {
/**
* DOCUMENT格式化輸出保存爲XML
*
* @param doc JDOM的Document
* @param filePath 輸出文件路徑
* @throws Exception
*/
public static void doc2XML(Document doc, String filePath) throws Exception{
Format format = Format.getCompactFormat();
format.setEncoding("UTF-8"); //設置XML文件的字符爲UTF-8
format.setIndent(" ");//設置縮進
XMLOutputter outputter = new XMLOutputter(format);//定義輸出 ,在元素後換行,每一層元素縮排四格
FileWriter writer = new FileWriter(filePath);//輸出流
outputter.output(doc, writer);
writer.close();
}
/**
* 字符串轉換爲DOCUMENT
*
* @param xmlStr 字符串
* @return doc JDOM的Document
* @throws Exception
*/
public static Document string2Doc(String xmlStr) throws Exception {
java.io.Reader in = new StringReader(xmlStr);
Document doc = (new SAXBuilder()).build(in);
return doc;
}
/**
* Document轉換爲字符串
*
* @param xmlFilePath XML文件路徑
* @return xmlStr 字符串
* @throws Exception
*/
public static String doc2String(Document doc) throws Exception {
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");// 設置xml文件的字符爲UTF-8,解決中文問題
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc, bo);
return bo.toString();
}
/**
* XML轉換爲Document
*
* @param xmlFilePath XML文件路徑
* @return doc Document對象
* @throws Exception
*/
public static Document xml2Doc(String xmlFilePath) throws Exception {
File file = new File(xmlFilePath);
return (new SAXBuilder()).build(file);
}
public static void main(String[] args) {
try{
Document doc = xml2Doc("test.xml");
System.out.println(doc);
System.out.println(doc2String(doc));
doc = string2Doc(doc2String(doc));
doc2XML(doc, "1.xml");
} catch (Exception e) {
e.printStackTrace();
}
}
}
jdom處理的XML Document 和String 之間的相互轉化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.