繁体   English   中英

如何在Python中使用ElementTree查询XML节点

[英]How to query XML node using ElementTree in python

我有以下示例XML树:

<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>

您是否知道如何运行查询,该查询将使用key =“ capital”和value =“ tokyo”(应提取id =“ def-678”和id =“的项目节点)提取“ list”下的“ items”节点def-901“)?

非常感谢你的帮助!

您可以通过find()findall()方法使用xml.etree支持的XPath表达式(请参阅文档 ):

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" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM