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节点下添加新的子节点name和value;当然也可以添加更多的子节点
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"]
:要删除的节点
property中name为3的节点
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)
运行前:
运行后: