Esta división fue probado por nuestros especialistas para asegurar la veracidad de esta crónica.
Solución:
Puede encontrar nodos de texto vacíos usando XPath, luego eliminarlos mediante programación de la siguiente manera:
XPathFactory xpathFactory = XPathFactory.newInstance();
// XPath to find empty text nodes.
XPathExpression xpathExp = xpathFactory.newXPath().compile(
"//text()[normalize-space(.) = '']");
NodeList emptyTextNodes = (NodeList)
xpathExp.evaluate(doc, XPathConstants.NODESET);
// Remove each empty text node from document.
for (int i = 0; i < emptyTextNodes.getLength(); i++)
Node emptyTextNode = emptyTextNodes.item(i);
emptyTextNode.getParentNode().removeChild(emptyTextNode);
Este enfoque puede ser útil si desea tener más control sobre la eliminación de nodos que el que se logra fácilmente con una plantilla XSL.
Intente usar el siguiente XSL y el strip-space
elemento para serializar su DOM:
How do I remove whitespace from an XML Document?
El siguiente código elimina los nodos de comentarios y los nodos de texto con todos los espacios vacíos. Si el nodo de texto tiene algún valor, el valor se recortará
public static void clean(Node node)
NodeList childNodes = node.getChildNodes();
for (int n = childNodes.getLength() - 1; n >= 0; n--)
Node child = childNodes.item(n);
short nodeType = child.getNodeType();
if (nodeType == Node.ELEMENT_NODE)
clean(child);
else if (nodeType == Node.TEXT_NODE)
String trimmedNodeVal = child.getNodeValue().trim();
if (trimmedNodeVal.length() == 0)
node.removeChild(child);
else
child.setNodeValue(trimmedNodeVal);
else if (nodeType == Node.COMMENT_NODE)
node.removeChild(child);
Ref: http://www.sitepoint.com/removing-useless-nodes-from-the-dom/
Reseñas y calificaciones
Recuerda que puedes mostrar este enunciado si te valió la pena.