使用LXML和Python更改XML

2024-06-26 16:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个XML文件“定义.xml“内容如下。你知道吗

<Definitions>
  <Process name="en">
    <property name="am">OLD_A</property>
    <property name="24hours" xsi:type="xsd:boolean">OLD_B</property>
  </Process>
</Definitions>

我想修改文件如下:

<Definitions>
  <Process name="en">
    <property name="am">NEW_A</property>
    <property name="24hours" xsi:type="xsd:boolean">NEW_B</property>
  </Process>
</Definitions>

我试过以下代码:

from lxml import etree

def Definations_Parser():
 global Definations_tree
 global Definations_root
 parser =  etree.XMLParser(remove_blank_text = True)
 Definations_tree = etree.parse('C:\\Users\\dell\\Desktop\\definitions.xml', parser)
 Definations_root = Definations_tree.getroot()

def Definations_File_Modify():
    Process_1 = Definations_root.find('Process')
    property_1 = Process_1.find('property[@name="am"]')
    print ('Current value is:', property_1.get('name'))

def Definations_File_Write():
 Definations_tree.write('C:\\Users\\dell\\Desktop\\definitions.xml', pretty_print = True)

Definations_Parser()
Definations_File_Modify()
Definations_File_Write()

如何获取当前值“OLD\u A”和“OLD\u B”并将其更改为“NEW\u A”和“NEW\u B”?你知道吗


Tags: 文件nametreenewdefpropertyrootxml
1条回答
网友
1楼 · 发布于 2024-06-26 16:33:21

与注释中提到的@tangoal一样,可以使用元素的text属性,如下所示:

from lxml import etree

def Definations_Parser():
    global Definations_tree
    global Definations_root
    parser =  etree.XMLParser(remove_blank_text = True)
    Definations_tree = etree.parse('C:\\Users\\dell\\Desktop\\definitions.xml', parser)
    Definations_root = Definations_tree.getroot()

def Definations_File_Modify():
    Process_1 = Definations_root.find('Process')
    property_1 = Process_1.find('property[@name="am"]')
    print(property_1.text)
    property_1.text = 'NEW_A'
    print(property_1.text)

    property_2 = Process_1.find('property[@name="24hours"]')
    print(property_2.text)
    property_2.text = 'NEW_B'
    print(property_2.text)

def Definations_File_Write():
    Definations_tree.write('C:\\Users\\dell\\Desktop\\definitions.xml', pretty_print = True)

Definations_Parser()
Definations_File_Modify()
Definations_File_Write()

相关问题 更多 >