天天看點

如何借助DOM生成XML檔案

   前段時間因為工作原因,要将一些動态的資料存入臨時檔案,經過思索我選擇了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();

    }

   }

  }

 }

}