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

如何用xmlstarlet筛选XML并按priority排序,返回label元素值?

解决XMLStarlet筛选排序问题

原命令的问题分析

你的命令存在两处关键错误:

  • 节点匹配逻辑错误:
    • 用//*匹配所有节点范围太宽泛,应该明确指定//item定位目标节点
    • 筛选Workflow条件时,param='Workflow 1'没有限定param的name属性,正确写法应为param[@name='workflow']='Workflow 1'
  • 排序参数格式错误:-s A:N:-中的多余冒号和减号不符合语法,XMLStarlet排序参数格式为-s <排序方向>:<排序类型> <XPATH>,其中:
    • 排序方向:A=升序,D=降序
    • 排序类型:N=数值排序,T=文本排序

正确命令

xmlstarlet sel -t -m "//item[enabled='true' and param[@name='workflow']='Workflow 1']" -s A:N "param[@name='priority']" -v "param[@name='label']" -n file.xml

命令解释

  1. -m "//item[enabled='true' and param[@name='workflow']='Workflow 1']":精准筛选出enabled为true且workflow参数值为Workflow 1的item节点
  2. -s A:N "param[@name='priority']":按priority参数的数值进行升序排序,对应你需要的Item C→Item B→Item A的输出顺序
  3. -v "param[@name='label']" -n:输出每个匹配节点的label参数值,并自动换行

执行结果

运行命令后将输出:

Item C
Item B
Item A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:06:17