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

如何使用Python修改XML文件元素值:No转NA、非Yes/No转Yes

Python实现XML元素值批量修改方案

我们可以直接使用Python标准库xml.etree.ElementTree完成需求,无需安装额外第三方依赖,完整实现代码如下:

import xml.etree.ElementTree as ET

# 注册XML命名空间,保证输出时inno前缀不丢失
INNO_NS = "http://innodatalabs.com/innodom"
ET.register_namespace("inno", INNO_NS)

def modify_datapoint(xml_path: str, output_path: str):
    # 解析XML文件
    tree = ET.parse(xml_path)
    root = tree.getroot()
    
    # 查找所有inno:datapoint元素
    datapoints = root.findall(".//inno:datapoint", namespaces={"inno": INNO_NS})
    
    for dp in datapoints:
        original_val = dp.text.strip() if dp.text else ""
        if original_val == "No":
            dp.text = "NA"
        elif original_val != "Yes":
            dp.text = "Yes"
    
    # 写入修改后的XML
    # 如需保持原文件的缩进格式(Python 3.9及以上版本支持)
    # ET.indent(tree, space="    ")
    tree.write(output_path, encoding="UTF-8", xml_declaration=True)

if __name__ == "__main__":
    # 输入输出路径可根据实际情况修改
    modify_datapoint("Data.xml", "Data_updated.xml")
    # 如果需要直接覆盖原文件,可改为 modify_datapoint("Data.xml", "Data.xml")

代码说明

  • 提前注册inno前缀对应的命名空间,避免输出XML时前缀被自动替换为默认的ns0格式,保证输出结构和原文件一致
  • 兼容元素值为空的边界情况处理,避免字符串处理报错
  • 输出时保留UTF-8编码和XML声明,和原文件格式完全对齐
    运行上述代码后生成的更新文件,完全符合预期输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:24:03