嵌套的XML解析python

时间:2019-03-19 18:28:26

标签: python xml parsing

我有以下XML文件:

<annotations count="1">
  <track id="0" label="Machine">
    <box frame="0" ><attribute id="8">act1</attribute></box>
    <box frame="1" ><attribute id="8">act2</attribute></box>
    <box frame="2" ><attribute id="8">act1</attribute></box>
  </track>
</annotations>

我想提取框架和动作里面的属性。例如我想拥有(frame:0,act1),(frame:1,act2) ... 现在我正在做的是

root = xml.etree.ElementTree.parse(xml_file_path).getroot()

for track in root.iter('track'):
  for box in track.iter('box'):
    frame = box.get('frame')

我如何也可以获取相应的属性(act1,...,act 1)?

2 个答案:

答案 0 :(得分:1)

您可以通过

访问<attribute id="8">act1</attribute>
box.find('attribute')

要使用该行为,请执行以下操作:

>>>box.find('attribute').text
act1 # or act2

python文档是非常好的资源:https://docs.python.org/2/library/xml.etree.elementtree.html

答案 1 :(得分:1)

您还可以使用数组符号,如果您将其抓取或放入大量循环中可能会很有用

root[0][0][0].text

root[0][0][1].text 等等