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

如何使用xmlstarlet在XML中插入首个同级子节点?

解决方案

要在<xml>下插入首个<subnode>节点,你需要使用xmlstarlet的-i(insert before,在指定节点前插入)选项,而非-s(append,追加到子节点末尾)。正确的命令如下:

xmlstarlet ed -L -i "//xml/subnode[1]" -t elem -n subnode -v "Mary James" src.xml

命令说明:

  • -L:直接修改原文件(原地编辑)
  • -i "//xml/subnode[1]":定位到<xml>下的第一个<subnode>节点,在它之前插入新元素
  • -t elem:指定插入的是元素节点
  • -n subnode:新元素的名称为subnode
  • -v "Mary James":新元素的文本内容为Mary James

验证效果:

执行命令后,src.xml的内容会变为你预期的结构:

<?xml version="1.0"?>
<xml>
   <subnode> Mary James </subnode>
   <subnode> Peter Paul </subnode>
   <subnode> Peter daniel </subnode>
   <subnode> Peter Peter </subnode>
</xml>

原命令无效的原因:

你原来的命令使用了-s(追加)选项,会把新节点加到<xml>的所有子节点末尾;同时//xml/[1]是错误的XPath语法,无法正确定位目标位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:55:21