Saltar al contenido

¿Cómo eliminar líneas vacías adicionales del archivo XML?

Siéntete en la libertad de compartir nuestro espacio y códigos con otro, necesitamos de tu ayuda para hacer crecer nuestra comunidad.

Solución:

Primero, una explicación de por qué sucede esto, lo que podría estar un poco fuera de lugar ya que no incluyó el código que se usa para cargar el archivo XML en un objeto DOM.

Cuando lee un documento XML de un archivo, los espacios en blanco entre las etiquetas en realidad constituyen nodos DOM válidos, de acuerdo con la especificación DOM. Por lo tanto, el analizador XML trata cada secuencia de espacios en blanco como un nodo DOM (de tipo TEXT);

Para deshacerme de él, hay tres enfoques en los que puedo pensar:

  • Asocie el XML con un esquema y luego use setValidating(true) junto con setIgnoringElementContentWhitespace(true) sobre el DocumentBuilderFactory.

    (Nota: setIgnoringElementContentWhitespace solo funcionará si el analizador está en modo de validación, por lo que debe usar setValidating(true))

  • Escriba un XSL para procesar todos los nodos, filtrando solo los espacios en blanco TEXT nodos.
  • Use el código Java para hacer esto: use XPath para encontrar todos los espacios en blanco TEXT nodos, itere a través de ellos y elimine cada uno de su padre (usando getParentNode().removeChild()). Algo como esto haría (doc sería su objeto de documento DOM):

    XPath xp = XPathFactory.newInstance().newXPath();
    NodeList nl = (NodeList) xp.evaluate("//text()[normalize-space(.)='']", doc, XPathConstants.NODESET);
    
    for (int i=0; i < nl.getLength(); ++i) 
        Node node = nl.item(i);
        node.getParentNode().removeChild(node);
    
    

Pude arreglar esto usando este código después de eliminar todos los nodos de "ruta" antiguos:

while( pathsElement.hasChildNodes() )
    pathsElement.removeChild( pathsElement.getFirstChild() );

Esto eliminará todos los espacios vacíos generados en el archivo XML.

Un agradecimiento especial a MadProgrammer por comentar con el enlace útil mencionado anteriormente.

Aquí tienes las reseñas y valoraciones

Recuerda que puedes dar visibilidad a este enunciado si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *