You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过已知name元素值查找XML中result父元素的id属性

没问题,我来帮你搞定这个XML查询需求!针对你给出的XML结构,下面分别用xmllint和xmlstarlet两种工具来实现通过<name>值查找对应<result>的id属性:


方法一:使用xmllint工具

xmllint自带XPath查询支持,非常适合这类精准匹配场景。假设你的XML内容保存在data.xml文件中,要查找name为Test1对应的result的id,可以执行以下命令:

xmllint --xpath 'string(//result[name="Test1"]/@id)' data.xml

命令解释:

  • //result:从XML文档中匹配所有<result>元素
  • [name="Test1"]:筛选出子元素<name>的值恰好为Test1的<result>元素
  • @id:获取该<result>元素的id属性
  • string():将查询到的属性节点转换为纯字符串输出(避免输出XML格式的节点内容)

如果需要查找其他name值,只需要把命令中的Test1替换成目标值(比如Test2、Test3)即可。

小提示:如果你的原始XML没有单个根节点(虽然你给出的结构有<details>作为根),可以临时包裹一个根节点来避免xmllint报错,命令示例:

echo "<root>$(cat data.xml)</root>" | xmllint --xpath 'string(//result[name="Test1"]/@id)' -

方法二:使用xmlstarlet工具

xmlstarlet的查询语法更简洁直观,同样支持XPath。查找Test1对应id的命令如下:

xmlstarlet sel -t -v '//result[name="Test1"]/@id' data.xml

命令解释:

  • sel:xmlstarlet的查询(select)子命令
  • -t:指定要使用的模板
  • -v:输出指定XPath匹配到的节点的值
  • XPath部分的逻辑和xmllint的例子完全一致,替换Test1就能查询其他name对应的id

内容的提问来源于stack exchange,提问作者MathewS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:25:34