2013-02-07 22 views
5

我創建一個com.w3c.dom.DocumentString使用此代碼:com.w3c.dom.Document而不<?XML版本= 「1.0」 編碼= 「UTF-8」 獨立= 「否」?>

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> 

一切都OK了,但我不希望XML有<?xml version="1.0" encoding="UTF-8" standalone="no"?>聲明,因爲我必須與私鑰和嵌入到SOAP信封簽名。

回答

11

你可以使用一個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)); 

請注意,您還可以:

  • 使用StreamSource代替DOMSource直接喂String到變壓器,如果你真的不需要Document
  • 如果您想輸出Document,請使用DOMResult而不是StreamResult
+0

謝謝!現在我有另一個問題,試圖自己解決它們! :) –

相關問題