前段時間因為工作原因,要将一些動态的資料存入臨時檔案,經過思索我選擇了XML文本。
以下就是我生成XML的Java代碼,拿出來與大家分享,有什麼不對請不吝賜教:
import org.w3c.dom.*;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class CreateXmlDom {
public static void main(String[]args){
CreateXmlDom.createXMLContext();
System.out.println("123");
}
public static void createXMLContext(){
FileOutputStream out=null;
try {
//建立解析器工廠類
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//建立解析器
DocumentBuilder builder=factory.newDocumentBuilder();
//構造Document對象
Document document=builder.newDocument();
//設定XML版本
document.setXmlVersion("1.0");
document.setXmlStandalone(true);
//建立根元素
Element root=document.createElement("Org");
//添加根節點到Document對象中
document.appendChild(root);
//建立第一個子節點DepartConstruct
Element orgChildElement=document.createElement("DepartConstruct");
//設定DepartConstruct節點id屬性
orgChildElement.setAttribute("id", "DV001");
//設定DepartConstruct節點type屬性
orgChildElement.setAttribute("type", "A");
//建立DepartConstruct子節點Address
Element departAddressChildElement=document.createElement("Address");
//給Address節點指派
departAddressChildElement.setTextContent("XI AN China");
//添加Address到DepartConstruct節點内
orgChildElement.appendChild(departAddressChildElement);
//建立DepartConstruct第二個子節點MobilePhone
Element departPhoneChildElement=document.createElement("MobilePhone");
//給MobilePhone指派
departPhoneChildElement.setTextContent("13649275943");
//添加MobilePhone到DepartConstruct節點内
orgChildElement.appendChild(departPhoneChildElement);
//建立DepartDepartConstruct第三個子節點DepName
Element departNameChildElement=document.createElement("DepName");
//給DepName指派
departNameChildElement.setTextContent("Electronic DepartMent");
//添加DepName到DepartConstruct節點内
orgChildElement.appendChild(departNameChildElement);
//将orgChildElement添加到根節點内
root.appendChild(orgChildElement);
//将已建構的Document映射到檔案
TransformerFactory transFactory=TransformerFactory.newInstance();
Transformer transFormer=transFactory.newTransformer();
//設定輸出結果
DOMSource domSource=new DOMSource(document);
//生成xml檔案
File file=new File("OrgInfo1.xml");
//判斷該檔案是否存在,若果不存在則建立
if(!file.exists()){
file.createNewFile();
}
//檔案輸出流
out=new FileOutputStream(file);
//設定輸入源
StreamResult xmlResult=new StreamResult(out);
transFormer.transform(domSource, xmlResult);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}finally{
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}