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

标签 java xml-parsing transformer-model

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

附注我还注意到这个投票最高的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"?>

最佳答案

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

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

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

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

关于java - 如何抑制javax.xml.transform.Transformer的Transformer添加的xml元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718169/

相关文章:

Java xml Transformer转义&

java - 循环习语的奇怪 JIT 悲观化

java - 如何从 ListView 中完全编辑/删除元素?

java - 为每个 Controller 中的每个操作设置模型属性

java - java中查找双引号内的子字符串

Java 使用转换器在 XML header 中生成版本 "1.1"

python - 值错误: Unable to create dataset (name already exists) when using ModelCheckpoint to save my model

java - 类初始化和同步类方法

xml - 使用 Go 解析 XML 文件有一个奇怪的行为

java - 为什么我的属性值没有打印?