2016-12-03 85 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 
相關問題