使用xml.etree.ElementTree安全批量重命名XML节点:解析文件→用iter()或XPath定位旧标签→修改elem.tag→保留子元素/属性/文本→write()保存;支持命名空间处理及异常跳过。
批量重命名XML节点,本质是解析多个XML文件,定位指定标签(如),将其更改为新名称(如),再保存。不能用字符串替换,否则可能破坏嵌套结构或属性内容;必须用标准XML解析器,如xml.etree.ElementTree。
ElementTree不直接支持“重命名标签”,但可通过修改element.tag实现。关键点:遍历所有匹配节点,修改其tag属性,并保留子元素、文本、尾部文本和全部属性。
ET.parse()加载每个XML文件root.iter('旧标签名')或XPath(如.//oldName)精准定位elem.tag = '新标签名'
tree.write()保存,建议加encoding='utf-8'和xml_declaration=True
把单文件逻辑封装为函数,再用pathlib或glob遍历目录下所有.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')
root.iter('{*}oldName')(Python 3.8+支持)tag修改影响,无需额外操作