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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:30:03