如何在使用lxml和python查找子xml元素后获取父xml元素

时间:2016-08-26 22:07:36

标签: python xml lxml

我有点难以破解。自从我使用LXML以来,我需要一些帮助才能开始。我有一个XML文件,其中包含类别和代理元素的列表。请参阅下面的代码:

<categories>
  <category name="Light">
    <proxy>fan</proxy>
  </category>
  <category name="UI">
    <proxy>doorbell</proxy>
  </category>
</categories>

我想要做的是搜索所有代理元素以找到&#34; doorbell&#34;。如果找到,我想知道它来自的父元素的名称。因此,在上面的示例中,门铃将在父类别elementnamed&#34; UI&#34;下找到。最后,我只需要&#34; name&#34;的价值。代理所属的父元素的属性。

那里的任何大师都想帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果您只需要名称,也可以在一次搜索中完成所有操作:

import lxml.etree as ET

root = ET.XML('''
<categories>
  <category name="Light">
    <proxy>fan</proxy>
  </category>
  <category name="UI">
    <proxy>doorbell</proxy>
  </category>
</categories>
''')

category_names = root.xpath(
  './/proxy[. = $proxy_type]/parent::category/@name',
  proxy_type='doorbell')

print category_names

...正如人们所期望的那样发出:

['UI']