Python使用ElementTree库进行XML文件的增删改查操作

Mia
Mia
发布时间:2026-10-13 | 4人浏览过
原创

本文详细介绍如何利用Python内置的xml.etree.ElementTree库对XML文件进行全生命周期管理。内容涵盖从创建XML节点与属性、遍历查询特定标签数据,到动态修改节点文本与属性,以及根据条件删除节点并保存文件的完整代码示例。通过实际案例展示ET库在数据处理中的高效应用,适合需要处理XML格式数据的开发者参考。

Python XML操作概述

在Python开发中,处理XML格式数据是一项常见需求。本文将深入解析如何使用Python标准库中的XML处理模块,系统性地演示对XML文件进行创建、查询、修改及删除的具体实现方法。

XML文件的创建与结构构建

首先介绍如何构建并生成一个新的XML文件。通过定义根元素和子元素,我们可以灵活设置标签名称及属性。例如,创建一个名为personinfolist的根节点,并添加包含enrolled属性的personinfo子节点。在子节点中进一步嵌套name和age标签,分别赋予具体的文本内容和checked属性。此过程展示了ET库中Element与SubElement类的基本用法,用于构建层级化的XML结构。


import xml.etree.ElementTree as ET

new_xml=ET.Element('personinfolist')  #最外面的标签名
personinfo=ET.SubElement(new_xml,'personinfo',attrib={'enrolled':'aaa'}) #对应的参数是:父级标签是谁,当前标签名,当前标签属性与值
name=ET.SubElement(personinfo,'name')
name.text='xaoming'
age=ET.SubElement(personinfo,'age',attrib={'checked':'yes'})
age.text='23'

personinfo2=ET.SubElement(new_xml,'personinfo',attrib={'enrolled':'bbb'})
name=ET.SubElement(personinfo2,'name')
name.text='xaokong'
age=ET.SubElement(personinfo2,'age',attrib={'checked':'no'})
age.text='20'

et=ET.ElementTree(new_xml)
et.write('text1.xml',encoding='utf-8',xml_declaration=True)#生成text1.xml

XML数据的解析与查询方法

接下来演示如何解析已存在的XML文件并提取所需信息。使用ET.parse方法加载文件后,通过getroot获取根节点。遍历根节点下的直接子节点,可以打印出每个节点的标签名(tag)、属性字典(attrib)以及文本内容(text)。此外,利用iter方法可以指定遍历特定的标签(如year),从而快速定位并输出目标节点的信息,实现高效的数据查询。


import xml.etree.ElementTree as ET
tree=ET.parse('text1.xml')
root=tree.getroot()
print(root.tag)
#遍历 xml 文档
for i in root:
  print(i.tag,i.attrib)  # tag是指标签名,attrib 是指标签里的属性,text 是指标签内容
  for j in i:
    print(j.tag,j.attrib,j.text)
    for k in j:
      print(k.tag,k.attrib,k.text)
#只遍历 year 标签
for w in root.iter('year'): #只遍历指定标签
  print(w.tag,w.text)

XML节点内容的修改与保存

针对XML数据的更新操作,核心在于定位目标节点并修改其属性或文本值。通过iter方法遍历指定标签(如year),获取当前文本内容并转换为整数进行逻辑处理(如自增1)。修改后的值需重新转换为字符串赋值给node.text。同时,可以使用set方法为节点添加或更新属性(如updsted_by)。完成所有修改后,调用tree.write方法将变更写回原文件或新文件,确保数据持久化。


import xml.etree.ElementTree as ET
tree=ET.parse('text1.xml')
root=tree.getroot()
print(root.tag)
#修改 xml
for node in root.iter('year'): #要修改的标签
  new_year=int(node.text)+1
  node.text=str(new_year)
  node.set('updsted_by','kong') #给这个标签(year)添加新的属性 key:value
tree.write('text1.xml')   #再吧数据写回去

基于条件的节点删除操作

最后介绍如何根据条件删除XML中的节点。通过findall方法获取所有符合条件的父级标签(如country),并进一步查找其子节点(如rank)。将子节点的文本转换为整数后,与设定阈值(如50)进行比较。若满足删除条件(如rank大于50),则调用root.remove方法将该节点从树结构中移除。操作完成后,使用write方法保存结果到新文件(如output.xml),完成数据的筛选与清理。


import xml.etree.ElementTree as ET
tree=ET.parse('text1.xml')
root=tree.getroot()
for country in root.findall('country'):  #会取这个标签所有的数据
  rank=int(country.find('rank').text)
  if rank > 50:
    root.remove(country)  #删除数据
tree.write('output.xml') #再把数据写回文件

总结

以上即为利用Python对XML文件进行基础操作的完整流程。通过ElementTree库,开发者可以高效地实现XML数据的创建、读取、更新与删除功能。希望这些示例能为您的项目开发提供实用参考,欢迎持续关注本站获取更多技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表