如何 select 使用 xmllint 的所有节点,其中同一级别的节点具有特定值?

How to select all nodes using xmllint where node on same level has certain value?

考虑以下 example.xml 文件

<all>
  <item>
    <name>foo</name>
    <value>5</value>
    <readonly>true</readonly>
  </item>
  <item>
    <name>boo</name>
    <value>2</value>
    <readonly>false</readonly>
  </item>
  <item>
    <name>bar</name>
    <value>9</value>
    <readonly>true</readonly>
  </item>
</all>

我想列出 foobar,因为它们是 readonly 项。这对我没用:

cat example.xml | xmllint --xpath "all/item[readonly/text() = "true"]/name" -

我收到了:

XPath set is empty

您可以尝试使用这个 xpath :

/all/item[readonly='true']/name

您的初始 xpath 看起来也不错,因为有问题的 XML 作为输入发布,只是您可能需要在 xpath 参数值中将双引号更改为单引号:

--xpath "all/item[readonly/text() = 'true']/name"