Comencé a usar VTD (creo que VTD-XML) en Java, y para las lecturas de XPath es excelente. Donde estoy abordando un problema ahora es con la inserción de datos. Digamos que estoy haciendo lo siguiente:VTD-XML en Java - Buscar índice después de XMLModifier.insertAfterElement
VTDNav nav = preExistingGen.getNav();
AutoPilot pilot = new AutoPilot(nav);
pilot.selectXPath("/Something/SomethingElse");
if (pilot.evalXPath() != -1) {
XMLModifier modifier = new XMLModifier(nav);
modifier.insertAfterElement("<some>content</some>");
}
Lo que había asumido era esto era una actualización en tiempo real, lo que se reflejaría en el VTDNav. Parece que mi entendimiento es incorrecto, ya que simplemente insertar el contenido del elemento no le hace nada al navegador (si imprimo el VTDNav, aún contiene mi xml original). La única forma en que puedo ver cómo funciona el nuevo xml es emitirlo desde XMLModifier.
modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
¿Faltan algo aquí? ¿Hay una manera más fácil de hacer esto? Quería poder insertar el nuevo contenido y obtener inmediatamente el nuevo índice. Mi código existente (que usa las clases DOM estándar) tiene un montón de insertos y actualizaciones, y también necesito saber dónde estaba el último elemento insertado en el documento. Tener que mostrarAndReparse() cada vez y luego encontrar el elemento insertado (que tal vez no pueda garantizar) no parece una solución plausible.
Parece que no hay una gran solución que pueda encontrar en ninguna parte. Como mi código trata sobre la creación de un nuevo documento, adopto un enfoque híbrido: uso de vtd para hacer las lecturas en mi documento de entrada y uso DOM para hacer las escrituras en mi documento de salida. – jpcamara
+1, y también decidí usar VTD para leer y navegar el documento, pero uso DOM para modificarlo. –