我正在使用python module : xml.etree.ElementTree
来解析xml文件。
我很想知道是否有办法直接找到一个深层嵌套的属性。
例如,如果我想得到name attribute
的neigbhor(如果它存在),
如果我的根是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:
答案 0 :(得分:1)
根据您的数据样子以及您要完成的内容,您可以执行以下操作:
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查询。
这适用于我上面提供的网址:
#!/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