您的位置:首页 > 编程语言 > Java开发

用jdk自带的xml解析器创建xml文件

2011-01-04 21:04 309 查看
import java.io.FileOutputStream;
import java.io.PrintWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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;

public class ParseXMLTest {

public static void main(String[] args) {
String path = "src/NewFile.xml";
new ParseXMLTest().parseXml(path);
}

public void parseXml(String path) {

// 得到DOM解析器的工厂实例
// javax.xml.parsers.DocumentBuilderFactory类的实例就是我们要的解析器工厂
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();

try {

// 通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器
DocumentBuilder dombuilder = domfac.newDocumentBuilder();

// 把要解析的XML文档转化为输入流,以便DOM解析器解析它
// InputStream is = new FileInputStream(path);

// 解析XML文档的输入流,得到一个Document
// 由XML文档的输入流得到一个org.w3c.dom.Document对象,以后的处理都是对Document对象进行的
Document doc = dombuilder.newDocument();

// 得到XML文档的根节点
// 在DOM中只有根节点是一个org.w3c.dom.Element对象。
// Element root = doc.getDocumentElement();

//创建根节点
Element root = doc.createElement("result");
doc.appendChild(root);

//创建第二级节点
Element firstElement = doc.createElement("count");
//给节点添加值域
firstElement.appendChild(doc.createTextNode("100"));
root.appendChild(firstElement);

//创建第二级节点
Element secondElement = doc.createElement("success");

//创建第三级节点
Element secSuccessElement = doc.createElement("number");
secSuccessElement.appendChild(doc.createTextNode("90"));
secondElement.appendChild(secSuccessElement);

Element secPercentElement = doc.createElement("percent");
secPercentElement.appendChild(doc.createTextNode("90%"));
secondElement.appendChild(secPercentElement);

root.appendChild(secondElement);

//将创建的doc文档输出成文件
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(doc);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream("src/1.xml"));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);

} catch (Exception e) {
System.out.println("创建XML文件时异常:" + e);
}
}
}

创建的XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<result>
<count>100</count>
<success>
<number>90</number>
<percent>90%</percent>
</success>
</result>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: