GNU/Linux >> Linux の 問題 >  >> Linux

XPATH を使用した Linux Bash XMLLINT

xmllint よりも強力なように見えるので、私のお気に入りは xmlstarlet です:

xmlstarlet sel -t -v '/resources/item[@id="index.php"]/description/text()' en.xml

<ブロック引用>

特定の要素をターゲットにして、その子要素にドリルダウンする最善の方法

これを行う正しい XPath 式は次のとおりです:

/resources/item[@id="index.php"]/description/text()

平易な英語で:ドキュメント ノードから始めて、ドキュメント要素 resources まで 、その子 item に 、ただし id の値の場合のみ 属性は「index.php」で、その子 description に そのテキスト値を取得します。

私は xmllint を使用して XML ドキュメントを検証しますが、パス式には使用しません。 bash シェル (少なくとも Mac OS では) には、「xpath」と呼ばれる XPath 式を評価するためのさらに単純なツールがあります。

$ xpath en.xml '/resources/item[@id="index.php"]/description/text()'

すると、次の結果が得られます:

Found 1 nodes:
-- NODE --
DESCRIPTION

それでも xmllint を使用する場合は、次のように使用してください:

$ xmllint --xpath '/resources/item[@id="index.php"]/description/text()' en.xml > result.txt

デフォルトでは、--xpath --noout を意味します 、xmllint が入力 XML ファイルを出力しないようにします。出力を読みやすくするために、出力をファイルにリダイレクトします。

$ cat result.txt 
DESCRIPTION

Linux
  1. LinuxでのBash履歴の解析

  2. LinuxでのBash履歴での単語修飾子の使用

  3. bash の変数を持つエイリアス

  1. LinuxでのJQコマンドと例

  2. Bash -cと位置パラメータ?

  3. Bash:タイムアウトで待機

  1. Ardourを使用してLinuxで音楽を作成する

  2. busybox と bash だけの Linux ディストリビューションですか?

  3. 非表示のパスワード プロンプトで入力したパスワードをショートカットで削除する (Linux)