如何使用python将新数据附加到现有xml中

2024-03-28 23:58:41 发布

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

你好,这是我现有的xml文件

<domain type='kvm'>
      <name>mydomain</name>
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      <devices>
        <disk type='block' device='disk'>
          <driver name='qemu' type='raw' cache='none'/>
          <source dev='/dev/mydomain'/>
          <target dev='vda' bus='virtio'/>
        </disk>
      </devices>
</domain>

我想在上面的xml中的“devices”部分下附加另一个“disk”部分“,这样我的新xml就会喜欢这样。在

^{pr2}$

你能帮我怎么处理pythonxml吗

比尔。在

乌马尔


Tags: 文件namedevdomainkvmtypexmlblock
1条回答
网友
1楼 · 发布于 2024-03-28 23:58:41

您可以使用ElementTree来解析和更新XML。在

这里有一个代码可以做到这一点。在

import xml.etree.ElementTree as ET

def get_new_element():
    #create element and set attributes
    disk = ET.Element('disk')
    disk.attrib['type'] = 'block'
    disk.attrib['device'] = 'disk'

    #create sub-element and set attributes
    driver = ET.SubElement(disk, 'driver')
    driver.attrib['name'] = 'qemu'
    driver.attrib['type'] = 'raw'
    driver.attrib['cache'] = 'none'

    source = ET.SubElement(disk, 'source')
    source.attrib['dev'] = '/dev/mydomain2'

    target = ET.SubElement(disk, 'target')
    target.attrib['dev'] = 'vdb'
    target.attrib['bus'] = 'virtio'

    return disk


if __name__ == '__main__':
    xml_tree = ET.parse('data.xml')
    devices_element = xml_tree.find('devices')

    new_element = get_new_element()
    devices_element.append(new_element)

    new_xml_tree_string = ET.tostring(xml_tree.getroot())

    with open('updated_data.xml', "wb") as f:
        f.write(new_xml_tree_string)

对于prettyXML,请遵循:Pretty-Printing XML

相关问题 更多 >