来自下面的示例 xml
<?xml version="1.0"?>
<data>
<country>
<name>Liechtenstein</name>
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country>
<name>Singapore</name>
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country>
<name>Panama</name>
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
使用 Python ElementTree
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
for elem in tree.iter(tag='name'):
print (elem.tag)
显示三个名称元素。如何仅检索一个名称元素 <name>Panama</name>
带有特定的文本。
for elem in tree.iter(tag="name='panama'"):
不工作
最佳答案
您可以考虑在lxml
中使用xpath
。使用 text()
使您能够快速找到“Panama”作为元素的内容。完成此操作后,您可以导航到同一国家/地区的相邻信息项。
>>> from lxml import etree
>>> tree = etree.parse('test.xml')
>>> tree.xpath('.//name/text()')
['Liechtenstein', 'Singapore', 'Panama']
>>> for item in tree.xpath('.//name/text()'):
... if item == 'Panama':
... for cousins in item.getparent().getparent().getchildren():
... cousins.text
...
'Panama'
'68'
'2011'
'13600'
关于python - 检索具有标签的元素 - Python 中的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713214/