package com.blog;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
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;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
public class DocumentTest {
/**
* @param args
*/
public static void createXML(String filename){
Document document = null;
try {
//DOM解析器的工厂实例
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder();//DOM解析器对象
//document = documentBuilder.parse(file);//paser()方法解析XML文档,得到代表整个文档的Document对象,即XML的根节点
//doc.getDocumentElement().normalize();//合并相邻的文本节点并删除空的文本节点
document = documentBuilder.newDocument();
//Element rootEle = doc.getDocumentElement();
Element personEle = document.createElement("Person");
Element nameCodeEle = document.createElement("name");
Element ageEle = document.createElement("age");
Text msgCodeTextNode = document.createTextNode("zzz");
Text msgSummaryTextNode = document.createTextNode("ccc");
// Add message text node
nameCodeEle.appendChild(msgCodeTextNode);
ageEle.appendChild(msgSummaryTextNode);
// Add message element
personEle.appendChild(nameCodeEle);
personEle.appendChild(ageEle);
document.appendChild(personEle);
writeXML(document,filename);
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public static void writeXML(Node node,String filename){
File file = new File(filename);
if(!file.exists()){
file.mkdir();
}
// Create a new Transformer that performs a copy of the Source to the Result.
TransformerFactory transformationFactory = TransformerFactory.newInstance();
//写文件--用输出流
FileOutputStream fos = null;
OutputStreamWriter osw = null;
try {
Transformer transform = transformationFactory.newTransformer(); //得到转换器
//设置头文件的属性
transform.setOutputProperty(OutputKeys.ENCODING,"utf-8");//编码
transform.setOutputProperty(OutputKeys.METHOD, "xml"); //method
transform.setOutputProperty(OutputKeys.INDENT, "no");//indent specifies whether the Transformer may add additional whitespace when outputting the result tree;
DOMSource source = new DOMSource();// Transform the XML Source to a Result.
source.setNode(node);
fos = new FileOutputStream(new File(filename));
osw = new OutputStreamWriter(fos,"utf-8");
Result result = new StreamResult(osw);
transform.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}finally{
if(osw != null){
try {
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
String filename = "F:/1.xml";
DocumentTest.createXML(filename);
}
}
DOM创建XML文件
最新推荐文章于 2023-07-25 17:22:33 发布