Python xml ElementTree : find values of only first 3 elements with same name

标签 python xml elementtree

我想解析 xml 响应并将特定数据保存到列表中。

XML

<ack>Success</ack>
<version>1.13.0</version>
<data>
 <name>AAAA</name>
 <age>00</age>
<data>
 <name>BBBB</name>
 <age>11</age>
<data>
 <name>CCCC</name>
 <age>22</age>
.
.
.
.
<data>
 <name>ZZZZ</name>
 <age>999</age>

我正在使用 ElementTree 来解析 xml。

我的脚本

import requests, xml.etree.ElementTree as ET

e = requests.get('http://sample.com/xml')

#parse the response and get root
eroot = ET.fromstring(e.text)

#iterate over root and extract data
names = [ p.find('name').text for p in eroot.iter('data') ]

print(names)

我可以使用上面的脚本提取所有名称元素,但 xml 响应包含很多名称元素。我只需要前三个名字。

我使用列表理解来减少代码行数。

我的问题

  • 如何仅获取前三个名称而不解析 xml 中的所有名称。
  • 我可以使用任何循环将 p.find 限制为 3 次迭代吗?
  • 还有其他选择吗?

最佳答案

您可以使用itertools.islice() :

from itertools import islice

names = [ p.find('name').text for p in islice(eroot.iter('data'), 0, 3)]

关于Python xml ElementTree : find values of only first 3 elements with same name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948812/

相关文章:

python - 无法导入 "D": FLASK_APP

c# - Linq to xml,检索基于通用接口(interface)的列表

python - 如何使 Python 的 ElementTree 忽略引号和属性之间缺少空格?

Python etree xml写入问题

python - mysql python 由于某种原因不更新表

python - 如何使用本身就是外键的字段获取 Django 模型的对象列表?

c# - 使用 XDocument 编写 XML 时如何更改用于缩进的字符数

python - 使用 ElementTree 从头开始​​创建 xml 文档

python - 通过 DecisionTreeClassifier sklearn 合并数据?

java - Android 应用程序不幸的是应用程序已停止