【发布时间】:2012-04-23 23:06:58
【问题描述】:
我正在尝试编写一个 XML 文件。我能够使用以下代码创建文档。我想将此文档写入具有缩进支持的文件。目前我的代码看起来像这样。
在解析 XMl 和写入文件方面,哪种技术更好。
public void writeXmlToFile(Document dom) throws IOException {
OutputFormat format = new OutputFormat(dom);
format.setIndenting(true);
XMLSerializer serializer = new XMLSerializer ( new FileOutputStream(
new File("sample.xml")), format);
serializer.serialize(dom);
}
或者使用变压器是一种更好的方法。
public void writeXMLToFile(DOcument dom) throws TransformerException, IOException {
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer();
trans.setOutputProperty(OutputKeys.ENCODING, "utf-8");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProeprty("{http://xml.apache.org/xslt}indent-amount", "2");
StreamResult resut = new StreamResult(new FileWriter(output));
DOMSource source = new DOMSource(xmlDOC);
trans.transform(source, result);
writer.close();
}
这两种方法有什么区别?哪些技术可以提供更好的性能?
【问题讨论】:
-
假设“更好的性能”是指“使用更少的 CPU 时间”,为什么不编写一个循环来写入文件,例如,每种方法 100000 次并计算花费的时间?
-
您使用的是哪个 XMLSerializer?它属于什么包?
-
我正在使用 xerces 解析器 - “com.sun.org.apache.xml.internal.serialize.XMLSerializer”
标签: java xml xml-serialization transformation xerces