XMLStarlet基于值返回属性(反向查找)

时间:2014-07-15 13:16:11

标签: xpath xquery xmlstarlet

我有这个xml:

<block name="http-www.example.com">
  <mapentry tag="AB12">bottlecap</mapentry>
  <mapentry tag="CD45">description goes here</mapentry>
  <mapentry tag="GH23">12345</mapentry>
  <mapentry tag="JK89">54321</mapentry>
</block>

我想根据价值找到“标签”。

所以我想搜索“bottlecap”并让它返回“AB12”

在我看到的所有示例中,人们搜索属性以获取结果,但是在这种类型的xml中,由于节点和属性不明确,因此不可能

我一直在尝试使用-i,但这似乎只适用于节点或属性,但不适用于该值。

xmlstarlet sel -t -i //bottlecap -v "//mapentry[@tag]" "mytest.xml"

有没有办法搜索这个值?

1 个答案:

答案 0 :(得分:1)

也许这就是你要追求的目标?

xmlstarlet sel -t -v "//mapentry[. = 'bottlecap']/@tag" "mytest.xml"