是否有可以替换 XML 元素的 UNIX 命令?(例如 XPath 的 sed?)

是否有可以替换 XML 元素的 UNIX 命令?(例如 XPath 的 sed?)

是否有一个管道友好程序可以采用:

  • XML 文档
  • 指示目标元素的 XPath 表达式
  • 所需替代品

? 类似于sed但熟悉 XML(元素、空格等)?

答案1

XMLStarlet 可以编辑 XML,并且乐于存在于管道中。

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 是一组命令行实用程序(工具包),使用一组简单的 shell 命令来查询、转换、验证和编辑 XML 文档和文件,其方式类似于使用 UNIX grep、sed、awk、diff、patch、join 等命令的方式。

XMLStarlet 是一个开源免费软件,根据MIT 许可证允许商业和非商业用途的免费使用和分发

https://xmlstar.sourceforge.net/

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

答案2

如果你不介意使用/学习 XSLT,那么进程可以实现此目的的实用程序。

答案3

XMLSH 有一个命令固定这可能符合您的参数。

固定评估 xpath 表达式并编辑每个匹配的节点,输出结果文档

相关内容