tengo algunos (5.0) código Java que construye un DOM de varios (en caché) fuentes de datos, a continuación, elimina ciertos nodos de elementos que no son necesarios, a continuación, serializa el resultado en una cadena XML usando:Cómo quitar los nodos de texto solo en blanco de un DOM antes de la serialización?
// Serialize DOM back into a string
Writer out = new StringWriter();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "no");
tf.transform(new DOMSource(doc), new StreamResult(out));
return out.toString();
Sin embargo , ya que estoy eliminando varios nodos de elementos, termino con un montón de espacio en blanco adicional en el documento serializado final.
¿Hay una manera simple de eliminar/colapsar los espacios en blanco extraños del DOM antes (o mientras) se serializa en una Cadena?
Me gusta esta solución de "solo código" incluso mejor que la solución XSL, y como dijiste hay un poco más de control sobre la eliminación de nodos, si es necesario. –
Por cierto, este método solo parece funcionar si primero llamo a doc.normalize() antes de realizar la eliminación del nodo. No estoy seguro de por qué eso hace la diferencia. –
Excelente respuesta. Funciona para mí incluso sin normalizar(). –