我正在使用此代码从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"?>
声明,因为我必须用私钥签名并嵌入肥皂信封。
答案 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
代替String
将Document
直接送到变压器。StreamResult
,请使用DOMResult
代替Document
。