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

yq v4.34.2处理单元素XML时数据丢失问题求助

解决yq处理单个XML <string>元素时输出异常的问题

问题原因

yq解析XML时,当<string>节点仅存在单个实例时,会被解析为单个对象而非数组;而存在多个实例时会解析为数组。原命令中使用.resources.string[]索引,在单个对象场景下会遍历该对象的所有属性(而非对象本身),导致提取不到目标数据,输出空内容。

修复命令

通过强制将单个<string>对象转为数组,统一处理单/多元素场景:

yq -p=xml '(.resources.string | arrays // [.])[] | [.+@name, .+content] | join("|")' sample.xml

命令解释

  • (.resources.string | arrays // [.]):判断.resources.string是否为数组,若是则直接使用;若为单个对象则包装成数组,确保后续[]索引能正确遍历每个<string>元素
  • 后续逻辑与原命令一致:提取name属性和元素内容,拼接为键|值格式

验证示例

单个的XML文件(sample.xml)

<resources>
  <string name="app_name">MyApp</string>
</resources>

执行修复命令后输出:

app_name|MyApp

多个的XML文件

原命令能正常输出的多元素场景,修复后的命令依然保持原有正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:47:36