2016-08-17 23 views
0

使用ElementTree的查询XML节点我有下面的示例XML树:如何在python

<main> 
    <section> 
    <list key="capital" value="sydney"> 
     <items> 
      <item id="abc-123"></item> 
      <item id="abc-345"></item> 
     </items> 
    </list> 
    <list key="capital" value="tokyo"> 
     <items> 
      <item id="def-678"></item> 
      <item id="def-901"></item> 
     </items> 
    </list> 
    </section> 
</maim> 

你知道如何运行一个查询,将提取的“项目”节点“列表”下用钥匙= “capital”和value =“tokyo”(它应该提取id =“def-678”和id =“def-901”的项目节点)?

非常感谢您的帮助!

回答

0

可以使用XPath表达式xml.etree支持(见the documentation)经由find()findall()方法:

from xml.etree import ElementTree as ET 

raw = '''your xml string here''' 
root = ET.fromstring(raw) 
result = root.findall(".//list[@key='capital'][@value='tokyo']/items/item") 

控制台测试输出:

>>> for r in result: 
...  print ET.tostring(r) 
... 
<item id="def-678" /> 

<item id="def-901" />