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>
1. 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>
"""
2. 指定された名前に従って、対応する値を変更します。
.//property[@name="1"]/name
property
: はノードの名前です
@name="1"
: 名前が付けられているノード 1
name
: 最内層の名前; 同様に値を変更して値を変更できます 値
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)
操作結果:
同様に、指定された値に従って、対応する名前を変更します
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)
操作結果:
3. ノードを追加する
新しいプロパティノードを追加します
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)
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)
操作結果:
4. 指定した名前のノードラベルを削除します
要件: propertyの名前に従って、対応するプロパティタグ全体を削除します
.//property[@name="3"]
:削除するノード
プロパティの名前が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)
実行する前に:
実行後: