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

如何在XML中仅选中父级id标签并重新顺序编号?

解决XML外层id标签重新编号问题

核心需求:仅修改<spells>节点下直接子级的<id-xxxx>/</id-xxxx>标签,按顺序从00001编号到00601,完全保留<actions>内的id标签。

方法一:VSCode 可视化操作(无需编程)

步骤1:精准匹配目标标签

打开替换面板(Ctrl+H),勾选「正则表达式」选项:

  • 查找外层开始标签:输入正则 ^(\s*)<id-\d{5}>,点击「查找全部」(Alt+Enter),所有外层<id-xxxx>会被选中(多光标模式)。
  • 查找外层结束标签:输入正则 ^(\s*)</id-\d{5}>,同样点击「查找全部」选中所有目标结束标签。

步骤2:批量替换并递增编号

  1. 处理开始标签:

    • 删除选中的标签内容(仅保留缩进),输入<id-。
    • 按Ctrl+Shift+P,搜索「Increment Selection」→「With Leading Zeros」,设置位数为5,自动生成00001到00601的编号。
    • 若用Text Pastry插件:搜索「Text Pastry: Insert Numbers」,起始值填1,格式选00000,确认即可。
  2. 处理结束标签:

    • 重复上述操作,删除选中内容后输入</id-,再用同样的递增编号方法补全编号。

关键注意点

先通过VSCode的「格式化文档」(右键菜单)统一XML缩进,确保外层id标签的缩进与子级标签不同,正则才能精准匹配。

方法二:Python脚本(更可靠,无缩进依赖)

直接解析XML结构,避免正则匹配的局限性:

import xml.etree.ElementTree as ET

# 加载目标XML文件
tree = ET.parse('你的XML文件名.xml')
root = tree.getroot()

# 遍历spells下的所有子节点,重新编号
for index, spell_node in enumerate(root, start=1):
    # 替换标签名的编号部分
    spell_node.tag = f"id-{index:05d}"

# 保存修改后的文件
tree.write('修改后的XML文件名.xml', encoding='utf-8', xml_declaration=True)

使用时替换脚本中的文件名,运行后即可得到外层标签正确编号的XML文件,内部id标签完全不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:26:17