如何使用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
相关产品推荐
相关产品推荐

