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!
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", "");
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
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()
.