gpt4 book ai didi

python - 使用 ElementTree 获取 python3 中的所有 xml 属性值

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:22 26 4
gpt4 key购买 nike

我有以下xml文件

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>

我想使用 ElementTree 编写 python 3 代码来获取所有国家名称。所以最终结果应该是 dictarray

['Liechtenstein','Singapore','Panama']

我正在尝试使用 Xpath 执行此操作,但一无所获。所以我的代码如下

import xml.etree.ElementTree as ET
tree = ET.parse(xmlfile)
root = tree.getroot()

names = root.findall("./country/@name")

但是上面的方法不起作用,因为我觉得我的 xpath 是错误的。

最佳答案

使用findall()获取所有 country 标签并从 .attrib 获取 name 属性词典:

import xml.etree.ElementTree as ET

data = """your xml here"""

tree = ET.fromstring(data)
print([el.attrib.get('name') for el in tree.findall('.//country')])

打印 ['列支敦士登', '新加坡', '巴拿马']

请注意,您无法使用 xpath 表达式 //country/@name 获取属性值,因为 xml.etree.ElementTree 仅提供 limited Xpath support .


仅供引用,lxml提供了更完整的 xpath 支持,因此更容易获取属性值:

from lxml import etree as ET

data = """your xml here"""

tree = ET.fromstring(data)
print(tree.xpath('//country/@name'))

打印 ['列支敦士登', '新加坡', '巴拿马']

关于python - 使用 ElementTree 获取 python3 中的所有 xml 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25111193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com