.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读取。