python: .xml文件 操作

版权声明:转载请注明出处 https://blog.csdn.net/JNingWei/article/details/79966902

.xml 读取

我的.xml文件如下:
这里写图片描述

Code

通过如下代码模板,可实现对.xml文件的信息快捷读取:

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/Retail/001.xml"

def main():

    tree = ElementTree()
    tree.parse(XML_PATH)

    # 对一级text的获取
    folder = tree.find('folder').text  # milkpowder
    filename = tree.find('filename').text  # image005.png
    path = tree.find('path').text  # ../../image005.png

    size = tree.find('size')
    size_width = size.find('width').text  # 1440
    size_height = size.find('height').text  # 1080
    size_depth = size.find('depth').text  # 3

    segmented = tree.find('segmented').text  # 0

    # 对所有object的获取
    objs = tree.findall('object')

    # 对每个子object分别进行text获取
    for idx in range(len(objs)):
        tag = objs[idx].find('name').text
        x1 = int(round(float(objs[idx].find('bndbox').find('xmin').text)))
        y1 = int(round(float(objs[idx].find('bndbox').find('ymin').text)))
        x2 = int(round(float(objs[idx].find('bndbox').find('xmax').text)))
        y2 = int(round(float(objs[idx].find('bndbox').find('ymax').text)))
        bbox = [x1, y1, x2, y2]


if __name__ == "__main__":
    main()

.xml 修改文本

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/001.xml"


def main():

    tree = ElementTree()
    tree.parse(XML_PATH)
    objs = tree.findall('object')

    # 修改 指定属性 的 文本
    objs[0].find('name').text = "Nanjing"

    # 将新的tree覆盖写入原xml文件
    tree.write(XML_PATH, encoding="utf-8")


if __name__ == "__main__":
    main()

成功将第一个“object”项的”name”属性的文本改为了“Nanjing”:
这里写图片描述

Summary

.xml文件信息的存放类似于多级的字典(dict)。
因此,通过xml.etree.ElementTree库对.xml文件信息的读取,其实就是在分级text下对指定key进行的value读取。


[1] Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页