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

如何用Python批量替换XML文件中的指定字符串?

解决XML文件批量替换字符串的问题

你之前的代码只处理了XML元素的文本内容,但XML里的Rom1大概率还存在于元素的属性值里,这就是没替换全的原因。下面是修正后的方案,同时支持单文件和批量处理:

单文件处理代码

import xml.etree.ElementTree as ET

def replace_in_xml(file_path, old_str, new_str):
    tree = ET.parse(file_path)
    root = tree.getroot()

    # 遍历所有元素,同时处理文本和属性
    for elem in root.iter():
        # 处理元素文本内容
        if elem.text is not None:
            elem.text = elem.text.replace(old_str, new_str)
        # 处理元素的所有属性值
        for attr_key in elem.attrib:
            elem.attrib[attr_key] = elem.attrib[attr_key].replace(old_str, new_str)
    
    # 保存修改后的文件(直接覆盖原文件,如需保留原文件可修改路径)
    tree.write(file_path, encoding='utf-8', xml_declaration=True)

# 调用示例
replace_in_xml('Rom1.xml', 'Rom1', 'Rom2')

批量处理目录下所有XML文件

如果要处理数百个文件,用下面的代码遍历指定目录下的所有.xml文件:

import os

# 配置参数
target_dir = './你的XML文件目录路径'
old_str = 'Rom1'
new_str = 'Rom2'

# 遍历目录处理文件
for filename in os.listdir(target_dir):
    if filename.lower().endswith('.xml'):
        file_path = os.path.join(target_dir, filename)
        replace_in_xml(file_path, old_str, new_str)
        print(f"已完成处理:{filename}")

注意事项

  • 若不想覆盖原文件,可修改tree.write的输出路径,比如改成file_path.replace('.xml', '_modified.xml')
  • 如果XML文件不是utf-8编码,需在ET.parse和tree.write时对应调整编码参数
  • 建议先拿单个测试文件验证效果,再批量执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:10:36