enfoque DOM Alternativa
Como alternativa, en lugar de hacer un recorrido en la fuerza bruta del documento XML se puede utilizar las capacidades de XPath en el JDK para encontrar la "B "elemento con el valor '13' y posteriormente retirarlo de su padre:
import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
import org.w3c.dom.*;
public class Demo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expression = xpath.compile("//A/B[C/E/text()=13]");
Node b13Node = (Node) expression.evaluate(document, XPathConstants.NODE);
b13Node.getParentNode().removeChild(b13Node);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.transform(new DOMSource(document), new StreamResult(System.out));
}
}
la ventaja de utilizar un XPath que es más fácil de mantener, si se cambia la estructura es sólo un cambio de una línea a su código. Además, si la profundidad de su documento aumenta, la solución basada en XPath mantiene el mismo número de líneas.
enfoque no-DOM
Si no desea que se materialice el XML como un DOM. Se puede usar un transformador y una hoja de estilo para eliminar un nodo:
@ user274069: XPath es un lenguaje alojado para seleccionar nodos de un árbol XML. No transforma el árbol. Si desea la solución XSLT, vuelva a realizar la selección. –