在lxml objectify中获取有序列表

时间:2018-08-17 18:24:02

标签: python lxml

如果我有一个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

为Channel输入一个条目。

如何在lxml objectify中以有序列表的形式获取此信息?如果lxml希望自动进行转换,我也可以更改XML标记。

1 个答案:

答案 0 :(得分:2)

objectify有点怪异,因为它尝试将xml映射到python对象,并且不是100%匹配,因此必须妥协。

Boa.Channels.Channel是第一个Channel

>>> Boa.Channels.Channel.get('name')
'Red'

但是同时它也可以作为Channel的列表:

>>> 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']