信息发布→ 登录 注册 退出

如何用Python脚本批量重命名XML文件中的节点

发布时间:2026-01-10

点击量:
使用xml.etree.ElementTree安全批量重命名XML节点:解析文件→用iter()或XPath定位旧标签→修改elem.tag→保留子元素/属性/文本→write()保存;支持命名空间处理及异常跳过。

明确目标:修改XML文件中的特定节点名称

批量重命名XML节点,本质是解析多个XML文件,定位指定标签(如),将其更改为新名称(如),再保存。不能用字符串替换,否则可能破坏嵌套结构或属性内容;必须用标准XML解析器,如xml.etree.ElementTree

使用ElementTree安全修改节点名

ElementTree不直接支持“重命名标签”,但可通过修改element.tag实现。关键点:遍历所有匹配节点,修改其tag属性,并保留子元素、文本、尾部文本和全部属性。

  • ET.parse()加载每个XML文件
  • root.iter('旧标签名')或XPath(如.//oldName)精准定位
  • 对每个匹配元素执行elem.tag = '新标签名'
  • 调用tree.write()保存,建议加encoding='utf-8'xml_declaration=True

批量处理多个XML文件的脚本结构

把单文件逻辑封装为函数,再用pathlibglob遍历目录下所有.xml文件:

  • 定义映射字典,如{'author': 'writer', 'book': 'publication'}
  • 对每个文件,解析→遍历映射→逐个修改匹配的tag→写回原路径或新目录
  • 加入异常处理,跳过解析失败的文件并打印警告
  • 可选:添加--dry-run参数预览变更,不实际保存

注意嵌套与命名空间(如有)

若XML含命名空间(如xmlns="http://example.com/ns"),直接写iter('item')会失效。需注册命名空间前缀,或用通配符{*}item匹配任意命名空间下的item

  • 推荐方式:ns = {'ns': 'http://example.com/ns'}; root.iter('{ns}oldName')
  • 通用方式(无须知道URI):root.iter('{*}oldName')(Python 3.8+支持)
  • 属性和文本内容不受tag修改影响,无需额外操作
标签:# python  # xml解析  # python脚本  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!