Luego de de nuestra larga selección de datos pudimos resolver esta cuestión que suelen tener muchos de nuestros lectores. Te compartimos la respuesta y esperamos servirte de gran ayuda.
Solución:
Usar setNodeValue
. Primero, obtenga una lista de nodos, por ejemplo:
myNodeList = (NodeList) xpath.compile("//MyXPath/text()")
.evaluate(myXmlDoc, XPathConstants.NODESET);
Luego establezca el valor de, por ejemplo, el primer nodo:
myNodeList.item(0).setNodeValue("Hi mom!");
Más ejemplos, por ejemplo, aquí.
Como se mencionó en otras dos respuestas aquí, así como en su pregunta anterior: técnicamente, XPath no es una forma de “actualizar” un documento XML, sino solo para ubicar nodos dentro de un documento XML. Pero supongo que lo anterior es lo que quieres.
EDITAR: Respondiendo a tu comentario… ¿Estás preguntando cómo escribe su DOM a un archivo XML después de haber terminado de editar el DOM? Si es así, aquí hay dos ejemplos de cómo hacerlo:
http://www.java2s.com/Code/Java/XML/WriteDOMout.htm
http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html
Puede eliminar el archivo y crear uno nuevo.
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
new InputSource("data.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("//employee/name[text()='old']", doc,
XPathConstants.NODESET);
for (int idx = 0; idx < nodes.getLength(); idx++)
nodes.item(idx).setTextContent("new value");
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(new DOMSource(doc), new StreamResult(new File("data_new.xml")));
XPath se utiliza para seleccionar partes de un documento XML. No prevé actualizaciones. Pero dado que devuelve objetos DOM (Elementos, si la memoria funciona, o tal vez Nodos), puede usar métodos DOM para modificar el documento.
valoraciones y reseñas
Recuerda algo, que puedes aclarar tu experiencia si diste con el hallazgo.