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

能否使用XmlStarlet结合查询结果完成XML节点编辑?

使用XmlStarlet实现XML节点的查询与批量更新

当然可以用XmlStarlet完成你的需求,而且完全能把查询Attribute节点name属性和更新对应ID内容的操作合并成一条命令,不用分开执行两次步骤。

核心命令实现

直接使用XmlStarlet的编辑(ed)模式,结合XPath表达式就能一次性完成批量更新:

xmlstarlet ed -u "/xml/Attribute/ID" -x "../@name" input.xml

命令参数解释

  • ed:启动XmlStarlet的XML编辑功能
  • -u "/xml/Attribute/ID":指定要更新的目标节点——根节点<xml>下所有<Attribute>里的<ID>元素
  • -x "../@name":通过XPath表达式获取当前<ID>节点的父节点(也就是对应的<Attribute>)的name属性值,将其设为<ID>的新内容

直接修改原文件(可选)

如果希望直接修改源XML文件而不是输出到终端,可以添加--inplace参数:

xmlstarlet ed --inplace -u "/xml/Attribute/ID" -x "../@name" input.xml

效果验证

执行命令后,你的XML会被批量更新:

return (<Attribute name="attribute1">
  <Value1>True</Value1>
  <Value2>True</Value2>
  <ID>attribute1</ID>
</Attribute>
)
return (<Attribute name="attribute2">
  <Value1>True</Value1>
  <Value2>True</Value2>
  <ID>attribute2</ID>
</Attribute>
)

可以看到,每个<Attribute>的<ID>内容已经自动替换成了对应节点的name属性值,完全符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:06:44