最初の属性が一致すると、xmllint は 2 番目の属性の値を表示します。

最初の属性が一致すると、xmllint は 2 番目の属性の値を表示します。

私のXMLは次のとおりです

<list1>
   <list2 id="abc" value="yes"></list2>
   <list2 id="xyz" value="no"></list2>
   <list2 id="def" value="yes"></list2>
<list1>

使用xmllintしかし、正しい出力を得ることはできません。 「abc」を提供する上記のxmlを照会すると、「yes」を返す必要があります。

ベストアンサー1

XPathstring()関数を使用して属性値のみを取得できますvalue

$ xmllint --xpath 'string(//list1/list2[@id="abc"]/@value)' data.xml
yes

一般的な構文を使用して変数としてキャプチャできますbash

value=$(
  xmllint --xpath \
  'string(//list1/list2[@id="abc"]/@value)' data.xml
)

それから:

echo $value

結果:

yes

おすすめ記事