Saltar al contenido

Cómo actualizar XML usando XPath y Java

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.

¡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 *