在 lxml objectify 中获取有序列表
Get an ordered list in 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']
如果我在 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']