¿Cuál es la forma más sencilla de obtener la representación de cadena de un documento XML ( org.w3c.dom.Document
)? Es decir, todos los nodos estarán en una sola línea.
Como ejemplo, de
<root>
<a>trge</a>
<b>156</b>
</root>
(esto es solo una representación de árbol, en mi código es un org.w3c.dom.Document
objeto, por lo que no puedo tratarlo como una cadena)
a
"<root> <a>trge</a> <b>156</b> </root>"
¡Gracias!
Respuestas:
Suponiendo que
doc
es su instancia deorg.w3c.dom.Document
:fuente
replaceAll
probablemente no es necesario si se agrega otra propiedad de salida:transformer.setOutputProperty(OutputKeys.INDENT, "no");
writer.getBuffer().toString()
simplemente puede serwriter.toString()
OutputKeys.INDENT
línea, porque entonces también puede configurarlo"yes"
para mantener el espacio en blanco, si eso es lo que desea (en mi situación, descubrí que simplemente eliminarreplaceAll
no funcionó para incluir el espacio en blanco en el cuerda).Utilice Apache XMLSerializer
aquí hay un ejemplo: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1
también puedes comprobar esto
http://www.netomatix.com/XmlFileToString.aspx
fuente
Primero necesita deshacerse de todos los caracteres de nueva línea en todos sus nodos de texto. Luego, puede usar una transformación de identidad para generar su árbol DOM. Mira el javadoc para
TransformerFactory#newTransformer()
.fuente