天天看点

如何借助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();

    }

   }

  }

 }

}