前段时间因为工作原因,要将一些动态的数据存入临时文件,经过思索我选择了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();
}
}
}
}
}