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