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

发布于 2024-12-09 00:39:46 字数 783 浏览 1 评论 0原文

我一直在使用 Java API 来解析 XML 文件,以便添加、删除或更新元素/属性。一切都按照我想要的方式工作,除了我使用的 Transformer 对象添加了 到 XML 文件的开头。我想知道是否有办法抑制这种情况。

PS我还注意到这个投票最高的 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();

原文档不包含

I've been using the Java APIs to parse an XML file so I could add, remove, or update elements/attributes. Everything works the way I want, except that the Transformer object I'm using adds <?xml version="1.0" encoding="UTF-8"?> to the beginning of the XML file. I was wondering if there is a way to suppress this.

P.S. I also noticed that this top-voted answer mentioned that we might be able to supress it.

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();

The original document does not contain <?xml version="1.0" encoding="UTF-8"?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

窗影残 2024-12-16 00:39:47
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

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

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

An alternative to the accepted answer. But I think this is better..

小嗲 2024-12-16 00:39:47

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

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

,或者如果样式表中已有 元素,则只需添加 omit-xml-declaration =“yes” 属性值。

如果您无法更改 XML,则根据特定转换器的序列化程序实现,您也许能够设置参数或功能来禁用 XML 声明。从技术上讲,这是输出串行器的一个选项,而不是变压器本身,并且某些实现允许您将参数传递给串行器。具体如何实现这一点取决于实施情况。

If you can change the XSLT, then just add

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

or if you already have an <xsl:output.../> element in the stylesheet, just add the omit-xml-declaration="yes" attribute value.

If you can't change the XML, then depending on the specific transformer's serializer implementation, you may be able to set a parameter or feature to disable the XML declaration. Technically this is an option to the output serializer, not the transformer per se, and some implementations allow you to pass parameters to the serializer. How you actually accomplish this depends on the implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文