欢迎访问宙启技术站
智能推送

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文件。