Python实现XML文件的增删改查操作
发布时间:2023-12-11 17:35:02
Python中可以使用第三方库xml.etree.ElementTree来实现对XML文件的增删改查操作。xml.etree.ElementTree是Python标准库中的一个模块,用于操作XML数据。
首先,我们需要导入xml.etree.ElementTree模块,并使用ElementTree的parse方法来解析XML文件。然后,我们可以使用ElementTree提供的方法来对XML文件进行增删改查操作。
下面是一个使用xml.etree.ElementTree实现XML文件的增删改查操作的示例代码:
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('data.xml')
root = tree.getroot()
# 查找节点
def find_node(root, path):
return root.findall(path)
# 添加节点
def add_node(root, parent_path, tag, attrib={}):
parent_node = root.find(parent_path)
new_node = ET.SubElement(parent_node, tag, attrib)
return new_node
# 修改节点
def modify_node(node, text=None, attrib={}):
if text is not None:
node.text = text
if attrib:
node.attrib.update(attrib)
# 删除节点
def delete_node(root, parent_path, tag):
parent_node = root.find(parent_path)
for node in parent_node.findall(tag):
parent_node.remove(node)
# 保存文件
def save_file(tree, file_path):
tree.write(file_path, encoding='utf-8', xml_declaration=True)
# 查找节点并打印结果
print("查找节点:")
nodes = find_node(root, './book')
for node in nodes:
print(ET.tostring(node, encoding='utf-8').decode('utf-8'))
# 添加节点
print("
添加节点:")
new_node = add_node(root, '.', 'book', {'id': '3'})
add_node(new_node, '.', 'title').text = 'XML编程'
add_node(new_node, '.', 'author').text = 'Python'
add_node(new_node, '.', 'price').text = '39.9'
save_file(tree, 'data.xml')
# 修改节点
print("
修改节点:")
node = find_node(root, './book[@id="2"]/price')[0]
modify_node(node, text='29.9')
save_file(tree, 'data.xml')
# 删除节点
print("
删除节点:")
delete_node(root, './book', 'book[@id="3"]')
save_file(tree, 'data.xml')
上述代码中,首先通过ET.parse方法解析XML文件,获取根节点root。然后,我们可以使用ElementTree提供的方法对XML文件进行增删改查操作。
在例子中,我们先使用find_node方法查找节点,然后使用ET.SubElement方法添加新的子节点,使用ET.Element.text修改节点的文本内容,使用ET.Element.attrib.update修改节点的属性,使用remove方法删除节点。最后,使用ET.write方法保存文件。
运行上述代码后,将实现对XML文件的增删改查操作,并保存为新的XML文件。
