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

如何用Python批量修改XML文件中<name>标签内容?求助

批量修改XML中下标签内容的问题修复

原代码存在的问题

  • mytree.write(xml_file) 放在遍历XML文件的循环外部,导致只有最后一个文件会保存修改结果,其余文件的修改不会生效。
  • 仅生成了替换后的字符串,但未将值更新到XML的<name>元素节点中,XML树没有实际被修改。
  • 字符串替换逻辑冗余,且未做条件判断,可能误改非number_plate的标签内容。

修正后的代码

import glob
import xml.etree.ElementTree as ET

dir_path = 'G:/YoloV7/annotations'  # 避免使用Python关键字`dir`作为变量名

for xml_file in glob.glob(dir_path + '/*.xml'):
    mytree = ET.parse(xml_file)
    root = mytree.getroot()
    
    # 遍历所有<object>节点下的<name>标签
    for obj in root.iter('object'):
        name_elem = obj.find('name')
        if name_elem is not None and name_elem.text == 'number_plate':
            name_elem.text = 'license_plate'
            print(f"已修改文件: {xml_file} 中的标签内容")
    
    # 将修改后的XML树写入原文件(如需备份可先复制原文件)
    mytree.write(xml_file, encoding='utf-8', xml_declaration=True)

改动说明

  1. 将文件写入语句移至循环内部,确保每个修改后的XML文件都能保存更改。
  2. 直接获取<name>元素节点,修改其text属性来更新内容,真正修改XML树结构。
  3. 增加条件判断,仅当<name>内容为number_plate时才执行替换,避免误操作。
  4. 变量名dir改为dir_path,避免与Python内置函数dir()冲突。
  5. 写入时指定编码和XML声明,保证文件格式正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:47