XML操作是开发中处理结构化数据的常见需求,涵盖解析、增删改查等核心场景,不同编程语言实现方式存在差异,但核心逻辑相通。下面以Python语言为例,介绍XML操作的完整示例代码。

XML基础操作准备
Python标准库中的xml.etree.ElementTree模块是处理XML的常用工具,无需额外安装依赖,适合大多数基础XML操作场景。首先我们需要准备一个测试用的XML文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<name>张三</name>
<age>25</age>
<email>zhangsan@ipipp.com</email>
</user>
<user id="2">
<name>李四</name>
<age>28</age>
<email>lisi@ipipp.com</email>
</user>
</users>
XML解析与查询操作
解析XML文件并查询指定节点是最基础的操作,以下代码实现读取XML文件并查询所有用户信息的功能:
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse("test.xml")
root = tree.getroot()
# 查询所有user节点
users = root.findall("user")
for user in users:
user_id = user.get("id")
name = user.find("name").text
age = user.find("age").text
email = user.find("email").text
print(f"用户ID:{user_id},姓名:{name},年龄:{age},邮箱:{email}")
# 查询指定id的用户
target_user = root.find(f"user[@id='1']")
if target_user is not None:
print(f"查询到目标用户:{target_user.find('name').text}")
XML新增节点操作
如果需要向XML中新增用户节点,可以通过创建元素对象并添加到根节点的方式实现,代码如下:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
root = tree.getroot()
# 创建新的user节点
new_user = ET.Element("user", id="3")
# 创建子节点并赋值
name_node = ET.SubElement(new_user, "name")
name_node.text = "王五"
age_node = ET.SubElement(new_user, "age")
age_node.text = "30"
email_node = ET.SubElement(new_user, "email")
email_node.text = "wangwu@ipipp.com"
# 将新节点添加到根节点
root.append(new_user)
# 保存修改后的XML
tree.write("test.xml", encoding="UTF-8", xml_declaration=True)
print("新增用户节点成功")
XML修改节点操作
修改XML中已有节点的内容,需要先定位到目标节点,再修改其属性或文本内容,示例代码如下:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
root = tree.getroot()
# 定位到id为2的用户节点
target_user = root.find("user[@id='2']")
if target_user is not None:
# 修改年龄内容
age_node = target_user.find("age")
age_node.text = "29"
# 修改节点属性
target_user.set("id", "22")
print("修改用户节点成功")
# 保存修改
tree.write("test.xml", encoding="UTF-8", xml_declaration=True)
XML删除节点操作
删除XML中的指定节点可以使用remove方法,需要先找到父节点和目标节点,再由父节点执行删除操作,代码如下:
import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
root = tree.getroot()
# 定位要删除的节点,这里删除id为3的用户
target_user = root.find("user[@id='3']")
if target_user is not None:
root.remove(target_user)
print("删除用户节点成功")
# 保存修改
tree.write("test.xml", encoding="UTF-8", xml_declaration=True)
操作注意事项
- 修改XML后写入文件时,建议指定
xml_declaration=True和正确的编码,避免中文乱码问题 - 查询节点时如果路径不存在,
find方法会返回None,需要做非空判断避免报错 - 如果XML文件结构复杂,可以使用XPath语法进行更精准的节点定位,
ElementTree支持部分XPath语法
XMLXML_parseXML_modifyXML_query修改时间:2026-07-19 18:42:11