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>

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)

実行する前に:ここに画像の説明を挿入

実行後:ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41264055/article/details/130894900
おすすめ