【问题标题】:Convert Element to XML string without <?xml version=...> prefix将 Element 转换为没有 <?xml version=...> 前缀的 XML 字符串
【发布时间】:2015-10-08 09:47:04
【问题描述】:

我有一个遗留代码,其中有很多这样的 org.w3c.dom.Element

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element exampleElement = doc.createElement("example");
exampleElement.appendChild(...

如何将exampleElement 转换为这样的 XML 字符串? (允许任何其他库)

<example>
  ...
</example>

不是这样

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

【问题讨论】:

标签: java xml


【解决方案1】:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OMIT_XML_DECLARATION, "yes");
Writer writer = new StringWriter();
transformer.transform(new DOMSource(node), new StreamResult(writer));
return writer.toString();

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释并说明适用的限制和假设。
  • javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION
【解决方案2】:

有一些选择:

  1. 使用 XSL 转换器通过指令 omit-xml-declaration

    应用更改

    变压器变压器= TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty("省略 xml-declaration", "yes"); transformer.transform(new DOMSource(document), new StreamResult(stream));

  2. 使用字符串替换过程将第一行替换为正则表达式或使用 indexOf("?>")

  3. 根据使用的 JDK 中 w3c 文档的实现,可以在文档的 DOMConfiguration 中使用一些选项,例如 canonical-form

    document.getDomConfig().setParameter("canonical-form",true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2012-10-10
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多