Document XML à chaîne
Quel est le moyen le plus simple d'obtenir la représentation de chaîne d'un document XML (org.w3c.dom.Document
)? C'est tous les nœuds seront sur une seule ligne.
À titre d'exemple, à partir de
<root>
<a>trge</a>
<b>156</b>
</root>
(ce n'est qu'une représentation arborescente, dans mon code c'est un objet org.w3c.dom.Document
, donc je ne peux pas le traiter comme une chaîne)
À
"<root> <a>trge</a> <b>156</b> </root>"
Merci!
3 answers
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 Apache XMLSerializer
Voici un exemple: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1
Vous pouvez également vérifier cela
Vous devez d'abord vous débarrasser de tous les caractères de saut de ligne dans tous vos nœuds de texte. Ensuite, vous pouvez utiliser une transformation d'identité pour générer votre arborescence DOM. Regardez le javadoc pour TransformerFactory#newTransformer()
.