2016-08-26 5 views
0

私はひどい裂け目があります。私がLXMLを使用して以来、私は何か助けが必要です。カテゴリとプロキシ要素のリストを持つXMLファイルがあります。 「ドアベル」私は何をしたいことを見つけるためにすべてのプロキシ要素による検索ですlxmlとpythonを使用して子xml要素を見つけた後に親xml要素を取得する方法

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

:以下のスニペットを参照してください。見つかった場合は、それが由来する親要素の名前を知りたいと思います。したがって、上記の例では、「UI」という名前の親カテゴリの要素の下に玄関があります。結局のところ、私はちょうどプロキシが落ちた親要素の "name"属性の値が必要です。

私にこの問題に取り組んでもらえますか?

答えて

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'] 
+0

はうまく動作します!ありがとう。 – user2643864

+3

または '' .//category[proxy = $ proxy_type]/@ name '、proxy_type =' doorbell ') ' –

関連する問題