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

如何使用xmlstarlet匹配动态XML标签并提取对应内容?

解决xmlstarlet合并动态XML标签名与对应值的问题

示例输入XML(推测结构)

<ST>
  <Data3020>
    <value>110</value>
    <detailType>N/A</detailType>
  </Data3020>
  <Data3030>
    <value>10</value>
    <detailType>N/A</detailType>
  </Data3030>
  <Data3040>
    <value>70</value>
    <detailType>N/A</detailType>
  </Data3040>
  <Data3080>
    <value>770</value>
    <detailType>N/A</detailType>
  </Data3080>
  <Data3090>
    <value>44</value>
    <detailType>N/A</detailType>
  </Data3090>
</ST>

目标输出格式

Data3020|110|N/A
Data3030|10|N/A
Data3040|70|N/A
Data3080|770|N/A
Data3090|44|N/A

最终xmlstarlet命令

xmlstarlet sel -t -m "/ST/*[starts-with(name(), 'Data')]" -v "concat(name(), '|', value, '|', detailType)" -nl test.xml

命令解释

  • -m "/ST/*[starts-with(name(), 'Data')]":定位到<ST>下所有以Data开头的动态子标签
  • -v "concat(name(), '|', value, '|', detailType)":将当前标签名、value子元素值、detailType子元素值用竖线|拼接成一行
  • -nl:每条结果后自动换行

灵活调整输出

如果只需要标签名和value值,修改concat内容即可:

xmlstarlet sel -t -m "/ST/*[starts-with(name(), 'Data')]" -v "concat(name(), '|', value)" -nl test.xml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:23:30