2013-02-07 7 views
5

Tworzę com.w3c.dom.Document od A String przy użyciu tego kodu:com.w3c.dom.Document bez <? Xml version = "1.0" encoding = "UTF-8" standalone = "no"?>

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

Kiedy System.out.println(xmlToString(document)), otrzymuję to:

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

Wszystko jest ok, ale nie chcę XML mieć deklarację <?xml version="1.0" encoding="UTF-8" standalone="no"?>, bo muszę podpisać z kluczem prywatnym i osadzić na kopercie mydła.

Odpowiedz

11

Można użyć Transformer i ustawić OutputKeys.OMIT_XML_DECLARATION nieruchomość do "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)); 

Uwaga mogłeś również:

  • Użyj StreamSource zamiast DOMSource karmić String bezpośrednio do transformator, jeśli naprawdę nie potrzebujesz Document.
  • Użyj DOMResult zamiast StreamResult, jeśli chcesz wyprowadzić Document.
+0

Dzięki! Teraz mam inne problemy, próbuję je rozwiązać sam! :) –

Powiązane problemy