如何使用Python修改XML中string标签的value值
错误原因
你提供的代码无法运行的核心问题是:root.findall('string')返回的是所有匹配的text属性,必须遍历列表中的每一个元素,再对单个元素的text属性赋值。
正确实现方案
方案1:将所有标签的内容统一修改为同一个值
import xml.etree.ElementTree as ET # 解析XML文件 tree = ET.parse(archivo_xml) root = tree.getroot() # 遍历所有string标签 for string_item in root.findall('string'): # 逐个修改每个标签的text值 string_item.text = "something" # 修改完成后保存回原文件(也可指定新文件路径避免覆盖原文件) tree.write(archivo_xml, encoding='utf-8', xml_declaration=True)
方案2:根据name属性修改对应标签的内容(按需选用)
如果不需要统一修改,只想修改指定name属性的标签值,可以用如下逻辑:
import xml.etree.ElementTree as ET tree = ET.parse(archivo_xml) root = tree.getroot() # 定义需要修改的键值映射,键为name属性,值为要更新的内容 update_map = { "name1": "自定义新值1", "name3": "自定义新值3", "name5": "自定义新值5" } for string_item in root.findall('string'): # 获取当前string标签的name属性 name_attr = string_item.get('name') # 如果在修改映射中存在对应配置,就更新值 if name_attr in update_map: string_item.text = update_map[name_attr] tree.write(archivo_xml, encoding='utf-8', xml_declaration=True)
注意事项
tree.write方法的encoding='utf-8'和xml_declaration=True参数可以保证输出的XML文件编码正确,避免出现中文乱码问题- 如果不想覆盖原文件,把
write方法的第一个参数替换为新的文件路径即可
内容的提问来源于stack exchange,提问作者KevinDoUrden
相关产品推荐
相关产品推荐

