com.w3c.dom.Document没有<! - ?xml version =“1.0”encoding =“UTF-8”standalone =“no”? - >

时间:2013-02-07 11:50:11

标签: java xml

我正在使用此代码从com.w3c.dom.Document创建String

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new InputSource(new StringReader("<a><b id="5"/></a>")));

当我System.out.println(xmlToString(document))时,我明白了:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><a><b id="5"/></a>

一切都很好,但我不希望XML有<?xml version="1.0" encoding="UTF-8" standalone="no"?>声明,因为我必须用私钥签名并嵌入肥皂信封。

1 个答案:

答案 0 :(得分:12)

您可以使用Transformer并将OutputKeys.OMIT_XML_DECLARATION属性设置为"yes"

Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter sw = new StringWriter();
t.transform(new DOMSource(doc), new StreamResult(sw));

请注意您还可以:

  • 如果您确实不需要DOMSource,请使用StreamSource代替StringDocument直接送到变压器。
  • 如果您想输出StreamResult,请使用DOMResult代替Document