我有一个很难解决的难题。自从我使用LXML以来已经很久了,我需要一些帮助才能开始。我有一个XML文件,其中包含类别和代理元素的列表。请查看下面的代码段:
<categories>
<category name="Light">
<proxy>fan</proxy>
</category>
<category name="UI">
<proxy>doorbell</proxy>
</category>
</categories>
我想做的是搜索所有代理元素以找到“门铃”。如果找到,我想知道它来自的父元素的名称。因此,在上面的示例中,门铃将在父类别元素“ UI”下找到。最后,我只需要代理所属的父元素的“名称”属性值即可。
那里有大师想要帮助我解决这个问题吗?
如果您只需要名称,那么最好一次搜索即可:
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']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句