如何使用Python ElementTree修改XML元素?含指定字段修改需求
使用Python ElementTree修改XML元素
首先假设你的XML结构如下(基于需求推断):
<vehicles> <car> <rego>AD-4214</rego> <make>Tata</make> <model>Sumo</model> </car> </vehicles>
以下是实现需求的完整代码:
import xml.etree.ElementTree as ET # 加载XML文件(若处理字符串则用ET.fromstring(xml_str)) tree = ET.parse('input.xml') root = tree.getroot() # 定位到rego为AD-4214的车辆节点,修改对应字段 for car in root.findall('car'): rego_elem = car.find('rego') if rego_elem and rego_elem.text == 'AD-4214': # 修改make字段 make_elem = car.find('make') if make_elem: make_elem.text = 'Nissan' # 修改model字段 model_elem = car.find('model') if model_elem: model_elem.text = 'Skyline' # 保存修改后的XML tree.write('output.xml', encoding='utf-8', xml_declaration=True)
关键步骤说明
- 加载XML:用
ET.parse()读取本地XML文件;如果是内存中的XML字符串,替换为root = ET.fromstring(xml_content)。 - 精准定位目标节点:通过遍历
car节点,检查rego值是否为AD-4214,确保只修改目标车辆的信息。 - 修改元素文本:找到
make和model节点后,直接赋值text属性完成修改。 - 保存结果:
tree.write()方法支持指定编码和XML声明,避免乱码或格式问题。
如果你的XML结构更简单(比如没有vehicles父节点),可以简化定位逻辑:
root = ET.parse('input.xml').getroot() if root.find('rego').text == 'AD-4214': root.find('make').text = 'Nissan' root.find('model').text = 'Skyline' tree.write('output.xml')
内容的提问来源于stack exchange,提问作者Krishantha
相关产品推荐
相关产品推荐

