¿Existe algún comando UNIX que pueda reemplazar un elemento XML? (¿Como un sed para un XPath?)

¿Existe algún comando UNIX que pueda reemplazar un elemento XML? (¿Como un sed para un XPath?)

¿Existe un programa compatible con tuberías que requiera:

  • Un documento XML
  • Una expresión XPath que indica los elementos de destino.
  • El reemplazo deseado

? ¿Algo parecido sedpero con conocimientos sobre XML (elementos, espacios en blanco, etc.)?

Respuesta1

XMLStarlet puede editar XML y está feliz de vivir en una tubería.

xmlstarlet edit \
    -N "b=http://www.springframework.org/schema/beans" \
    -u '/b:beans/b:bean[@id="stun1"]/b:constructor-arg/@value' \
    -v "stun.example.com \
    -L servers.xml

cat servers.xml | xmlstarlet edit -u <xpath> -v <value>

XMLStarlet es un conjunto de utilidades de línea de comandos (kit de herramientas) para consultar, transformar, validar y editar documentos y archivos XML utilizando un conjunto simple de comandos de shell de manera similar a cómo se hace con UNIX grep, sed, awk, diff, comandos de parche, unión, etc.

XMLStarlet es un software gratuito de código abierto lanzado bajo unaLicencia MITque permite el uso y distribución gratuitos tanto para fines comerciales como no comerciales.

https://xmlstar.sourceforge.net/

https://en.m.wikipedia.org/wiki/XMLStarlet

Respuesta2

Si no le importa usar/aprender XSLT, existe laxsltprocutilidad que puede lograr esto.

Respuesta3

XMLSH tiene un comandofijoque podría ajustarse a sus parámetros.

fijoevalúa una expresión xpath y edita cada nodo coincidente generando el documento de resultados

información relacionada