【问题标题】:How to suppress the xml element added by Transformer of javax.xml.transform.Transformer如何抑制 javax.xml.transform.Transformer 的 Transformer 添加的 xml 元素
【发布时间】:2011-10-10 20:17:34
【问题描述】:

我一直在使用 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"?>

【问题讨论】:

  • 为什么需要抑制 XML 标头?
  • 我们拥有的所有 xml 文档都遵循特定的格式。这就是为什么。

标签: java xml-parsing transformer


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:
    trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多