我正在使用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