web-dev-qa-db-fra.com

Document XML en chaîne

Quel est le moyen le plus simple d’obtenir la représentation sous forme de chaîne d’un document XML (org.w3c.dom.Document)? C'est-à-dire que tous les nœuds seront sur une seule ligne.

Par exemple, de

<root>
  <a>trge</a>
  <b>156</b>
</root>

(ceci n'est qu'une représentation arborescente, dans mon code c'est un org.w3c.dom.Document objet, je ne peux donc pas le traiter comme une chaîne)

à

"<root> <a>trge</a> <b>156</b> </root>"

Merci!

99
bluish

En supposant que doc est votre instance de org.w3c.dom.Document:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
196
WhiteFang34

Utiliser le XMLSerializer Apache

voici un exemple: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1

vous pouvez aussi vérifier cela

http://www.netomatix.com/XmlFileToString.aspx

2
GuruKulki

Tout d'abord, vous devez vous débarrasser de tous les caractères de nouvelle ligne dans tous vos nœuds de texte. Vous pouvez ensuite utiliser une transformation d'identité pour générer votre arborescence DOM. Regardez le javadoc pour TransformerFactory#newTransformer().

1
forty-two