1

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

PS我还注意到这个投票最多的答案提到我们可能能够压制它。

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"?>

4

2 回答 2

2

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

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

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

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

于 2011-10-11T20:48:47.847 回答
0
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

已接受答案的替代方案。不过我觉得这个更好。。

于 2021-07-16T12:14:08.473 回答