python - 检索具有标签的元素 - Python 中的 XML

标签 python xml elementtree

来自下面的示例 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/

相关文章:

python - 如何在 Tkinter 的 Canvas 小部件中放置小部件?

python - AWS boto3 get_object 调用的 IfMatch 参数如何工作?

python - 使用 Python 多重处理读取大文件

Windows XML 输出的 Python ETREE 解析

python - 调用 ElementTree.parse 时为 "XML or text declaration not at start of entity: line 2, column 0"

python - python 中的简单类型与复杂类型?

javascript - 使用 javascript 请求远程 XML 数据

sql - 解析xml时如何使用 "cross apply"?

java - 使用 testng.xml 使用 Maven 运行单个 TestNG 测试

python - 使用 xml.dom.minidom 或 elementtree 读取 XML 文件 - Python