在..对象列表列表中找到所需的子对象

时间:2014-07-04 11:32:44

标签: python list suds

我正在使用suds,并实现接收和发送附件(我已经完成了),我需要在“低”级suds对象的某个地方工作。其中一个用于生成SOAP XML的对象具有此结构(伪代码):

struct object
[
    [string] name
    [list of objects] children
]

当我收到这个对象时,我必须检查:

  • 它有名称“document”,
  • 然后选择名为“Envelope”的孩子,
  • 然后选择名为“Body”的孩子,
  • 然后选择名为“UpdateRequest”的孩子,
  • 然后选择名字为“model”的孩子,
  • 然后选择名为“instance”的孩子,
  • 然后选择名为“附件”的孩子

然后使用该子树。如何采用这个子树(并检查它是否存在)pythonic风格? 当我测试它时,我用这种方式:

attachments_tree = soap_xml.children[0].children[1].children[0].children[0].children[1].children[21]

但我想要的是:

attachments_tree = soap_xml["document"]["Envelope"]["Body"]["UpdateRequest"]["model"]["instance"]["attachments"]

我确定转换为字典是个坏主意。 尝试像这里一步一步调用子树:

Envelopes = [child for child in soap_xml.children if child.name == 'Envelope']
Body = [child for child in Envelopes[0].children if child.name == 'Body']

看起来也很糟糕,即使这样也行不通。是否有良好的pythonic解决方案?

0 个答案:

没有答案