我正在使用python module : xml.etree.ElementTree解析xml文件。
我很想知道是否有一种方法可以直接找到深层嵌套的属性。
例如,如果我要获取neigbhor的name attribute(如果存在),
如果我的根是country/rank/year/gdppc,则需要遍历data。有没有一种快速的方法来查找该属性?

<data>
    <country name="Liechtenstein">
        <rank>
           <year>
                 <gdppc>
                       <neighbor name="Austria" direction="E"/>
                 </gdppc>
           </year>
         </rank>
    </country>
</data>


编辑:
我在这条线上尝试了一些东西。但是没有帮助;我不确定是否应该对resp.content使用xml

resp=requests.get(url_fetch,params=query)
    with open(resp.content) as fd:
        doc = ElementTree.parse(fd)
        name = doc.find('PubmedArticle//Volume').text
        print name


这是xml:

最佳答案

根据数据的外观以及要完成的任务,您可以执行以下操作:

with open('data.xml') as fd:
    doc = ElementTree.parse(fd)
    name = doc.find('country[@name="Liechtenstein"]//neighbor').get('name')
    print name


给定上面的输入,将产生:

Austria


如果要使用Python解析XML,则可能需要查看lxml模块,该模块完全支持XPath查询。

这对您上面提供的URL有用:

#!/usr/bin/python

import requests
from xml.etree import ElementTree

res = requests.get('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=24059499&retmode=xml')
doc = ElementTree.fromstring(res.content)
ele = doc.find('.//PubmedArticle//Volume')
print ele.text

10-06 10:30
查看更多