シェルから解析する必要がある XML ファイルがあります。次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<things>
<thing>
<foo>123</foo>
<bar>false</bar>
</thing>
<thing>
<bar>true</bar>
<foo>abc</foo>
</thing>
</things>
s の子ノードの順序thing
は任意であることに注意してください。私の実際のデータでは、それぞれの内部に他の子ノードがいくつかありますthing
。
現在、 の値foo
は一意です。childの値が、たとえば のbar
子ノードの値を取得する必要があります。XPath クエリを使用しようとしましたが、うまくいきませんでした。一致しません。または、より一般的なクエリでテストすると、ツリー全体が取得されます。thing
foo
abc
xmllint
$ xmllint --pattern //thing[foo='abc']/bar test.xml
xmllint: No match.
$ xmllint --pattern //thing/bar test.xml
(the whole tree)
私はただ得ることを望んでいましたtrue
。
私は何を間違っていますか?他の質問で言及されているフラグにアクセスできない--xpath
ので、それが答えであれば運が悪いです。