【问题标题】:Omitting the standalone attribute in xml declaration when using Java DOM + Transformer.使用 Java DOM + Transformer 时省略 xml 声明中的独立属性。
【发布时间】:2010-12-13 13:24:27
【问题描述】:

有没有办法告诉 Transformer(当使用 DOM 序列化 XML 文档时)省略独立属性?

最好不使用 hack,即省略整个 XML 声明,然后手动添加它。

我当前的代码:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); //Note nothing is changed

StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(document);
transformer.transform(source, result);
 return result.getWriter().toString();

当前:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<someElement/>

目的:

<?xml version="1.0" encoding="UTF-8">
<someElement/>

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

    想通了..

    而不是改变变压器,

    我将以下内容添加到文档对象中。

      document.setXmlStandalone(true);
    

    【讨论】:

    【解决方案2】:

    document.setXmlStandalone(true/false); 工作正常。

    【讨论】:

      【解决方案3】:

      您必须使用以下组合:

      doc.setXmlStandalone(true);

      transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); // this is used to show the standalone tag

      【讨论】:

      • 终于有一个有效的答案了! :D
      • 目标是隐藏属性,上面的答案显示了属性。
      • @pkozuchowski 你是对的,但我的意思是我们需要设置两个选项才能使其正常工作。
      【解决方案4】:

      您使用的是哪个 Java 版本和/或哪个 XSLT 转换器?在 Sun Java 1.6.0_16 中,如果您设置了 output 属性并且内容也正确,则只会在输出文档中设置独立属性。

      【讨论】:

      • 我在使用 Eclipse 4.5 (Mars) 的内置 Java 8 SE 时遇到了同样的问题。
      猜你喜欢
      • 2012-03-24
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多