python - 在lxml objectify中获取有序列表
问题描述
如果我有一个 XML 中的有序列表
<Boa>
<Channels>
<Channel name="Red"/>
<Channel name="Green"/>
<Channel name="Blue" />
</Channels>
</Boa>
这段代码
from lxml import objectify
Boa = objectify.parse(self.xml).getroot()
只会让我
Boa.Channels.Channel
通道的单个条目。
如何在 lxml objectify 中将其作为有序列表?如果 lxml 期望自动进行转换,我也可以更改我的 XML 标记。
解决方案
objectify 有点奇怪,因为它试图将 xml 映射到 python 对象,这不是 100% 匹配,所以它必须妥协。
Boa.Channels.Channel
是第一个Channel
>>> Boa.Channels.Channel.get('name')
'Red'
但同时它也可以作为Channel
s 的列表工作:
>>> Boa.Channels.Channel[0].get('name')
'Red'
>>> Boa.Channels.Channel[1].get('name')
'Green'
>>> Boa.Channels.Channel[2].get('name')
'Blue'
>>> [c.get('name') for c in Boa.Channels.Channel]
['Red', 'Green', 'Blue']
推荐阅读
- javascript - 如何按属性值数组长度对对象进行排序?
- postgresql - postgreSQL中的外键约束错误
- c# - 如何更新 c# datagridview 中的唯一值 - 错误“无法在对象中插入重复键”
- php - 转换后的视频在 FFMpeg 中变得模糊
- node.js - 架构尚未注册
- java - 从税表计算所得税
- rust - 如何在 Rust 的内部循环中正确移动所有权?
- javascript - 如何在 pugjs 模板中使用 i18n?
- javascript - 在另一个模块中调用使用全局变量的函数
- windows - 如何在 DDD 架构中分离 ASP.NET Core IDENTITY?