2016-12-03 17 views
-1

私はPythonの初心者です。今私はXMLとxml.etree.ElementTreeを扱っています。私は以下の例のXMLに取り組んでいます
python3を使用してXMLの特定の属性を持つノードの値を取得する方法は?

<?xml version="1.0"?> 
<data> 
    <country name="Liechtenstein"> 
     <rank>1</rank> 
     <year>2008</year> 
     <gdppc>141100</gdppc> 
     <neighbor name="Austria" direction="E"/> 
     <neighbor name="Switzerland" direction="W"/> 
    </country> 
    <country name="Singapore"> 
     <rank>4</rank> 
     <year>2011</year> 
     <gdppc>59900</gdppc> 
     <neighbor name="Malaysia" direction="N"/> 
    </country> 
    <country name="Panama"> 
     <rank>68</rank> 
     <year>2011</year> 
     <gdppc>13600</gdppc> 
     <neighbor name="Costa Rica" direction="W"/> 
     <neighbor name="Colombia" direction="E"/> 
    </country> 
</data> 

私は特定の属性を持つ国のタグ内の値を取得したいのですが。
例えば、

私は国の名前=「シンガポール」

ランク、年gdppcを取得するためにワン私が試したが、それを行うにはどのようには考えています。
これは可能ですか?

+1

これは[etreeドキュメント](https://docs.python.org/3/library/xml.etree.elementtree.html)でのチュートリアルのように見えます。そこのコードを作業してみましたか?パーサを実行することができましたか?すべての国の名前とランクを表示するサンプルを実行しましたか?あなたはどこにいらっしゃいますか? –

+0

XMLパーサの結果をループするコードを書くことができない何らかの理由はありますか? (それはそれを行う最も効率的な方法ではありませんが、うまくいくでしょう)。 – jpmc26

答えて

0

XPath examples from the documentationをお読みください。それはすでに年を抽出する方法を示しています。

values = ['rank', 'year', 'gdppc'] 
for v in values: 
    print(v, root.findall(".//*[@name='Singapore']/{}".format(v))[0].text) 

出力

rank 4 
year 2011 
gdppc 59900 
関連する問題