赞
踩
一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。
python中用xml.dom.minidom来解析xml文件,实例如下:
- def readXml(xml):
- print("read xml file.")
- for fileName in os.listdir("Annotations"):
- print(fileName)
- # 使用minidom解析器打开xml文件
- dom = xml.dom.minidom.parse('Annotations/'+fileName)
- # 得到文档元素对象
- root = dom.documentElement
-
- # 获取图像宽高
- get_width = root.getElementsByTagName('width')
- width = get_width[0].firstChild.data
- get_height = root.getElementsByTagName('height')
- height = get_height[0].firstChild.data
-
- # 获取对象
- objects = root.getElementsByTagName('object') # 获取所有object标签
- ob_num = len(objects) # 图中蝴蝶个数
- ob_classes = []
- ob_coors = []
- for ob in objects:
- # 蝴蝶种类
- ob_class = ob.getElementsByTagName('name')
- ob_classes.append(ob_class[0].firstChild.data)
- # ob_classes.append(ob_class[0].ChildNodes[0].data)
-
- # 标记框位置
- temp_coor = []
- xmin = ob.getElementsByTagName('xmin')
- temp_coor.append(xmin[0].firstChild.data)
- xmax = ob.getElementsByTagName('xmax')
- temp_coor.append(xmax[0].firstChild.data)
- ymin = ob.getElementsByTagName('ymin')
- temp_coor.append(ymin[0].firstChild.data)
- ymax = ob.getElementsByTagName('ymax')
- temp_coor.append(ymax[0].firstChild.data)
- ob_coors.append(temp_coor)
-
- return width, height, ob_num, ob_classes, ob_coors
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。