是否有可以替換 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 是開源免費軟體,在麻省理工學院許可證允許商業和非商業免費使用和分發

https://xmlstar.sourceforge.net/

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

答案2

如果您不介意使用/學習 XSLT,那麼可以使用xslt過程可以完成此任務的實用程式。

答案3

XMLSH 有一個命令固定這可能適合您的參數。

固定計算 xpath 表達式並編輯輸出結果文件的每個匹配節點

相關內容