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

使用xmlstarlet插入嵌套Product元素时旧节点新增多余子元素如何解决

问题原因

你使用的 XPath 表达式 //Product 会匹配文档中所有的 <Product> 节点,包括已经存在的原有节点和刚新增的节点,因此每个节点下都会被插入新的 <name> 子元素。另外注意原有 XML 中节点名是大写开头的 <Name>,你的命令里用了小写的 name,也会导致节点名和预期不一致。

修正后的命令

xmlstarlet ed --inplace -s /Products -t elem -n "Product" -v "" \
-s /Products/Product[last()] -t elem -n "Name" -v "product2" \
Settings.xml

说明

将第二个插入操作的 XPath 改为 /Products/Product[last()],只会匹配你刚插入到 <Products> 列表末尾的最新 <Product> 节点,不会影响之前已有的节点,同时统一了 <Name> 节点的大小写,和原有结构保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:04