如何在Python中修改XML文件?按列表修改指定节点Active属性
Python 修改XML指定节点下的Active属性值
假设你需要将kk = ['AAA', 'CCC']列表中节点下的Active元素的value属性修改为False(可按需替换为True),以下是实现代码:
import xml.etree.ElementTree as ET # 解析XML文件 tree = ET.parse('MC.xml') root = tree.getroot() # 目标节点列表 kk = ['AAA', 'CCC'] # 遍历根节点下的所有子节点 for child in root: # 检查节点名称是否在目标列表内 if child.tag in kk: # 定位当前节点下的Active元素 active_elem = child.find('Active') if active_elem is not None: # 修改value属性值,按需替换为'True' active_elem.set('value', 'False') # 保存修改后的XML文件 tree.write('MC_modified.xml', encoding='UTF-8', xml_declaration=True)
代码说明
- 模块导入:使用Python标准库
xml.etree.ElementTree处理XML,无需额外安装依赖。 - XML解析:
ET.parse()读取目标XML文件,getroot()获取根节点<MCOO>。 - 节点遍历匹配:遍历根节点下的所有子节点,判断节点标签名是否在
kk列表中。 - 属性修改:通过
find('Active')定位目标节点下的<Active>元素,使用set()方法修改其value属性。 - 文件保存:
tree.write()将修改后的内容写入新文件(可替换原文件名直接覆盖,建议提前备份原文件),指定编码并保留XML声明。
可选:保留XML缩进格式
默认保存的XML会丢失缩进,若需要美观的格式化输出,可使用xml.dom.minidom辅助处理:
import xml.etree.ElementTree as ET from xml.dom import minidom def prettify(elem): # 格式化XML元素为带缩进的字符串 rough_string = ET.tostring(elem, 'utf-8') reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent=" ") # 执行上述解析、修改步骤... # 格式化并保存 with open('MC_modified.xml', 'w', encoding='UTF-8') as f: f.write(prettify(root))
内容的提问来源于stack exchange,提问作者Divyansh Kumar Singh
相关产品推荐
相关产品推荐

