簡體   English   中英

在Python中解析XML查找元素

[英]Parsing XML in Python finding element

我有一個xml文件(a1.xml)。

  <object>
    <label id="0">Helmet</label>
    <bndbox id="0">
      <xmin>295</xmin>
      <ymin>304</ymin>
    </bndbox>

    <label id="1">Person</label>
    <bndbox id="1">
      <xmin>279</xmin>
      <ymin>291</ymin>
    </bndbox>
  </object>

我想要這種格式

obj = [{'label': 'Helmet', 'xmin': 295, 'ymin': 304},
       {'label': 'Person', 'xmin': 279, 'ymin': 291}]

我的代碼如下

import xml.etree.cElementTree as ET
tree = ET.parse('a1.xml')
for subtag in root.findall('object'):
    tag = subtag.findall('label').text
    x = subtag.findall('xmin').text
    y = subtag.findall('ymin').text

如何解決呢?

也許在這里使用XPath語法會有所幫助。 干凈的編碼還將檢查find()是否不為None,例如

import xml.etree.cElementTree as ET
tree = ET.parse('a1.xml')
labels = tree.findall('.//label')
for label in labels:
    label_id = label.get('id')
    # find the first bndbox with id set to the same value
    bndbox = tree.find('.//bndbox[@id="%s"]' % label_id)
    if bndbox is None:
        continue
    tag = label.text
    if bndbox.find('xmin') and bndbox.find('ymin'):
        x = bndbox.find('xmin').text
        y = bndbox.find('ymin').text
    else:
        continue
    # here you can store tag, x, y in a list or dictionary

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM