XML 要素を置き換えることができる UNIX コマンドはありますか? (XPath の sed など)

XML 要素を置き換えることができる UNIX コマンドはありますか? (XPath の sed など)

以下のものを受け取るパイプ対応プログラムはありますか?

  • XML文書
  • 対象要素を示すXPath式
  • 望ましい代替品

? sedXML に似ていますが、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 は、UNIX の grep、sed、awk、diff、patch、join などのコマンドと同様に、シンプルなシェル コマンド セットを使用して XML ドキュメントおよびファイルを照会、変換、検証、編集するためのコマンド ライン ユーティリティ (ツールキット) のセットです。

XMLStarletは、オープンソースのフリーソフトウェアとしてリリースされ、MITライセンス商用、非商用を問わず自由に使用および配布できる

https://xmlstar.sourceforge.net/

https://en.m.wikipedia.org/wiki/XMLスターレット

答え2

XSLTの使用/学習に抵抗がなければ、xsltprocこれを実現できるユーティリティ。

答え3

XMLSHにはコマンドがある修正済みそれはあなたのパラメータに合うかもしれません。

修正済みxpath式を評価し、一致するすべてのノードを編集して結果ドキュメントを出力します。

関連情報