Quiero tomar un archivo XML y reemplazar el valor de un elemento. Por ejemplo, si mi archivo XML es el siguiente:Reemplazar el valor de un elemento XML? Sed expresión regular?
<abc>
<xyz>original</xyz>
</abc>
quiero reemplazar el valor original del elemento de XYZ, sea la que sea, por otra cadena para que el archivo resultante es el siguiente:
<abc>
<xyz>replacement</xyz>
</abc>
¿Cómo harías esto? Sé que podría escribir un programa Java para hacer esto, pero supongo que eso es excesivo para reemplazar el valor de un solo elemento y que esto podría hacerse fácilmente usando sed para hacer una sustitución usando una expresión regular. Sin embargo, soy menos que novato con ese comando y espero que algún alma amable leyendo esto pueda darme la expresión regular correcta para el trabajo.
Una idea es hacer algo como esto:
sed s/\<xyz\>.*\<\\xyz\>/\<xyz\>replacement\<\\xyz\>/ <original.xml >new.xml
Tal vez sea mejor para mí simplemente reemplazar toda la línea del archivo con lo que yo quiero que sea, ya que voy a conocer el nombre del elemento y el nuevo valor que quiero usar? Pero esto supone que el elemento en cuestión está en una sola línea y que ningún otro dato XML está en la misma línea. Prefiero tener un comando que básicamente reemplazará el valor del elemento xyz con una nueva cadena que especifique y no tener que preocuparme si el elemento está todo en una línea o no, etc.
Si sed no es la mejor herramienta para este trabajo, por favor llámeme a un mejor enfoque.
Si alguien puede dirigirme en la dirección correcta, realmente lo agradeceré, probablemente me ahorrará horas de prueba y error. ¡Gracias por adelantado!
--James
Estoy bastante seguro de que el modificador '/ g' en' sed' hace que se reemplace globalmente dentro de la línea, no se extienda a través de las líneas. Tampoco pensé que 'sed 'soportara expresiones regulares perezosas como esa, ciertamente no parece cuando lo intento. – Cascabel