如何抑制由Transformer of javax.xml.transform.Transformer添加的xml元素

时间:2011-10-10 20:17:35

标签: java xml-parsing transformer

我一直在使用Java API来解析XML文件,因此我可以添加,删除或更新元素/属性。一切都按我想要的方式工作,除了我正在使用的Transformer对象将<?xml version="1.0" encoding="UTF-8"?>添加到XML文件的开头。我想知道是否有办法压制这个。

P.S。我也注意到这个最高投票的answer提到我们可能会压制它。

DOMSource source = new DOMSource(document);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
FileOutputStream fout = new FileOutputStream(new File(outputFile));            
StreamResult result = new StreamResult(fout);
transformer.transform(source, result);
fout.close();

原始文档不包含<?xml version="1.0" encoding="UTF-8"?>

2 个答案:

答案 0 :(得分:2)

如果您可以更改XSLT,那么只需添加

即可
<xsl:output omit-xml-declaration="yes"/>

或者如果样式表中已经有<xsl:output.../>元素,只需添加omit-xml-declaration="yes"属性值。

如果您无法更改XML,那么根据特定转换器的序列化器实现,可能能够设置参数或功能以禁用XML声明。从技术上讲,这是输出序列化器的一个选项,而不是变换器本身,一些实现允许您将参数传递给序列化器。你如何实现这一点取决于实施。

答案 1 :(得分:0)

trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

已接受答案的替代方案。但我觉得这样更好..