在web專案中,XML作為一種重要的資料儲存和傳輸介質,被廣泛使用。XML檔案,XML字串和XML Document物件是XML存在的三種形式,XML檔案無需多言,和普通的文字並無二致;倒是在做一般的XML資料交換過程中,經常要使用XML字串和XML Document物件,因此在這兩種形式之間進行轉化成為了使用XML的必備技術。在所有操控XML的技術中,都提供了這兩種形式XML之間的轉換方法。
  下面我就各種XML技術對此問題的解決方法做個總結,和大家分享,也方便自己今後查閱。
一,使用JDOM(這是我最常使用的一種技術)
  1.字串轉Document物件
String xmlStr = “…..”;
StringReader sr = new StringReader(xmlStr);
InputSource is = new InputSource(sr);
Document doc = (new SAXBuilder()).build(is);

  2.Document物件轉字串

Format format = Format.getPrettyFormat();
format.setEncoding(“gb2312”);//設定xml檔案的字元為gb2312,解決中文問題
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc,bo);
String xmlStr = bo.toString();

 注:Document為org.jdom.Document


二,使用最原始的javax.xml.parsers,標準的jdk api
  1.字串轉Document物件
String xmlStr = “……”;
StringReader sr = new StringReader(xmlStr);
InputSource is = new InputSource(sr);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(is);

  2.Document物件轉字串

TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty(“encoding”,“GB23121”);//解決中文問題,試過用GBK不行
ByteArrayOutputStream bos = new ByteArrayOutputStream();
t.transform(new DOMSource(doc), new StreamResult(bos));
String xmlStr = bos.toString();

 注:Document為org.w3c.dom.Document


三,使用dom4j(這是最簡單的方法)
  1.字串轉Document物件
String xmlStr = “……”;
Document document = DocumentHelper.parseText(xmlStr);

  2.Document物件轉字串

Document document = …;
String text = document.asXML();

 注:Document為org.dom4j.Document


四,在JavaScript中的處理
 1.字串轉Document物件
var xmlStr = “…..”;
var xmlDoc = new ActiveXObject(“Microsoft.XMLDOM”);
xmlDoc.async=false;
xmlDoc.loadXML(xmlStr);
//可以處理這個xmlDoc了
var name = xmlDoc.selectSingleNode(“/person/name”);
alert(name.text);

  2.Document物件轉字串

var xmlDoc = ……;
var xmlStr = xmlDoc.xml

 注:Document為javaScript版的XMLDOM