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

如何使用xmlstarlet提取游戏配置XML的settings节点内容并格式化输出

解决方案

使用xmlstarlet的sel命令,通过模板模式精准提取元素名和属性值,并添加分隔符与换行,命令如下:

xml sel -t -m "/properties/settings/*" -v "name()" -o " " -v "@value" -n your-config.xml

参数说明:

  • -t:启用模板处理模式,用于自定义输出格式
  • -m "/properties/settings/*":匹配<settings>下的所有子元素
  • -v "name()":输出当前匹配元素的标签名称(如fooBar)
  • -o " ":输出一个空格作为名称与属性值的分隔符
  • -v "@value":输出元素的value属性值(如abc)
  • -n:在每个配置项后输出换行符,确保每行一个配置项

效果验证:

针对你提供的XML结构:

<properties>
  ...
  <settings>
    <fooBar value="abc"/>
    <uffDa value="1.23"/>
    ...
  </settings>
  ...
</properties>

执行命令后会输出:

fooBar abc
uffDa 1.23
...

为什么之前的命令不符合需求?

  • 最初用-c参数是复制节点的XML内容,所以会包含标签结构;
  • 第二次命令依然用-c,只是匹配子节点,输出的是所有子节点的XML文本拼接,没有换行和格式调整。而-v参数是专门提取节点/属性的文本值,配合-o和-n就能实现你想要的简洁格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:30:45