python操作xml,实现增删改查

xml文件内容如下:

<configuration>
	<property name="1">
		<name>beyond</name>
		<value>yanyu</value>
	</property>
	<property name="2">
		<name>beyond1</name>
		<value>yanyu1</value>
	</property>
	<property name="3">
		<name>beyond2</name>
		<value>yanyu2</value>
	</property>
</configuration>

一、查看xml中的内容

xml_path :xml文件存储路径

import os
from xml.dom.minidom import parse
xml_path = r'E:\Jupyter_notebook\paddle\yanyu.xml'
domTree = parse(xml_path)
rootNode = domTree.documentElement
xml_context = rootNode.toxml()
print(xml_context)

"""
<configuration>
	<property name="1">
		<name>beyond</name>
		<value>yanyu</value>
	</property>
	<property name="2">
		<name>beyond1</name>
		<value>yanyu1</value>
	</property>
	<property name="3">
		<name>beyond2</name>
		<value>yanyu2</value>
	</property>
</configuration>
"""

二、根据指定name,修改对应value

.//property[@name="1"]/name
property:为节点的名称
@name="1":name为1的节点
name:最里层的name;同理可以改成value即可对value进行修改
update_content:要修改的内容

import xml.etree.ElementTree as ET
xml_path = r'E:\Jupyter_notebook\paddle\yanyu.xml'  #你的xml路径
xml_dw = './/property[@name="1"]/name'  
update_content = 'huangjiaju' #要改的内容  
doc = ET.parse(xml_path)
root = doc.getroot()
sub1 = root.find(xml_dw)
sub1.text = update_content
doc.write(xml_path)

运行结果:在这里插入图片描述

同理,根据指定value,修改对应name

import xml.etree.ElementTree as ET
xml_path = r'E:\Jupyter_notebook\paddle\yanyu.xml'  #你的xml路径
xml_dw = './/property[@name="2"]/value'  #[@name]这个name是property的name;后面的/name,是最低成的name,value的name
update_content = 'yanyu will change' #要改的内容  
doc = ET.parse(xml_path)
root = doc.getroot()
sub1 = root.find(xml_dw)
sub1.text = update_content
doc.write(xml_path)

运行结果:在这里插入图片描述

三、添加节点

添加新的property节点
Element('property',{'name':'yy'})—><property name="yy"> </property>

property节点下添加新的子节点namevalue;当然也可以添加更多的子节点
name=Element('name')
name.text='new1'—><name>new1</name>
element.append(name)

value=Element('value')
value.text='new value'—><value>new value</value>
element.append(value)

import xml.dom.minidom as minidom
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import ElementTree,Element


def __indent(elem, level=0):#换行
    i = "\n" + level*"\t"
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "\t"
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
        for elem in elem:
            __indent(elem, level+1)
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
    else:
        if level and (not elem.tail or not elem.tail.strip()):
            elem.tail = i


xml_path = r'E:\Jupyter_notebook\paddle\yanyu.xml'  #你的xml路径
tree=ElementTree()
tree.parse(xml_path)
root=tree.getroot()
element=Element('property',{
    
    'name':'yy'}) #<property name="yy"> </property>

name=Element('name')
name.text='new1'#<name>new1</name>
element.append(name) 

value=Element('value')
value.text='new value'#<value>new value</value>
element.append(value)

root.append(element)
__indent(root)

tree.write(xml_path)

运行结果:在这里插入图片描述

四、删除指定name的节点标签

需求:根据property中的name,删除所对应的整个property标签

.//property[@name="3"]:要删除的节点
propertyname3的节点

import xml.etree.ElementTree as ET
xml_path = r'E:\Jupyter_notebook\paddle\yanyu.xml'  #你的xml路径
xml_dw = './/property[@name="3"]'
 
doc = ET.parse(xml_path)
root = doc.getroot()
yy = root.find(xml_dw)
root.remove(yy)

doc.write(xml_path)

运行前:在这里插入图片描述

运行后:在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/130894900