【问题标题】:How to remove encoding="UTF-8" standalone="no" from xml Document object in Java如何从 Java 中的 xml Document 对象中删除 encoding="UTF-8" Standalone="no"
【发布时间】:2011-11-22 14:35:48
【问题描述】:

我想用 Java 创建 XML。

     DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
     DocumentBuilder docBuilder;
     docBuilder = dbfac.newDocumentBuilder();
     Document doc = docBuilder.newDocument();

但是 Java 会自动创建这样的声明

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

我怎样才能删除encoding="UTF-8" standalone="no" 所以它会是

<?xml version="1.0"?>

谢谢!

【问题讨论】:

  • @JoachimSauer,我不想覆盖编码,因为其他程序以我不知道的方式使用此 XML。所以我不能确定我可以设置什么编码
  • @UmerHayat,不,关于删除所有 XML 声明的问题
  • @VextoR:任何 接受 XML 的工具必须接受具有有效编码属性的工具(特别是如果指定的编码是 UTF-8)。如果您的其他工具不接受这一点,那么它就损坏了
  • 如果没有字节顺序标记 (BOM),则 UTF-8 是 XML 文档的默认编码:opentag.com/xfaq_enc.htm#enc_default。这意味着 是等效声明(没有 BOM)。

标签: java xml xmldocument


【解决方案1】:

为什么需要删除编码?但是..

doc.setXmlStandalone(true);

将删除standalone="no"

【讨论】:

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

    这将解决您的问题,已在 JDK 6 中验证

    【讨论】:

    • 不明白问题上的负号。我在创建 BPEL 文件时遇到了同样的问题,可能还有很多其他原因需要这样做。所以谢谢你的回答。我会花很长时间。
    【解决方案3】:

    我认为没有合法的方法可以将这些属性从生成中排除。 但是在它生成之后,您可以使用 XSLT 来删除它。

    我认为这是一个好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 2019-10-17
      • 2011-02-21
      • 1970-01-01
      • 2013-10-13
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多