def get_reply(self, method, reply):
reply = self.replyfilter(reply)<EOL>sax = Parser()<EOL>replyroot = sax.parse(string=reply)<EOL>plugins = PluginContainer(self.options().plugins)<EOL>plugins.message.parsed(reply=replyroot)<EOL>soapenv = replyroot.getChild('<STR_LIT>')<EOL>soapenv.promotePrefixes()<EOL>soapbody = soapenv.getChild('<STR_LIT>')<EOL>self.detect_fault(soapbody)<EOL>soapbody = self.multiref.process(soapbody)<EOL>nodes = self.replycontent(method, soapbody)<EOL>rtypes = self.returned_types(method)<EOL>if len(rtypes) > <NUM_LIT:1>:<EOL><INDENT>result = self.replycomposite(rtypes, nodes)<EOL>return (replyroot, result)<EOL><DEDENT>if len(rtypes) == <NUM_LIT:1>:<EOL><INDENT>if rtypes[<NUM_LIT:0>].unbounded():<EOL><INDENT>result = self.replylist(rtypes[<NUM_LIT:0>], nodes)<EOL>return (replyroot, result)<EOL><DEDENT>if len(nodes):<EOL><INDENT>unmarshaller = self.unmarshaller()<EOL>resolved = rtypes[<NUM_LIT:0>].resolve(nobuiltin=True)<EOL>result = unmarshaller.process(nodes[<NUM_LIT:0>], resolved)<EOL>return (replyroot, result)<EOL><DEDENT><DEDENT>return (replyroot, None)<EOL>
Process the I{reply} for the specified I{method} by sax parsing the I{reply}
and then unmarshalling into python object(s).
@param method: The name of the invoked method.
@type method: str
@param reply: The reply XML received after invoking the specified method.
@type reply: str
@return: The unmarshalled reply.  The returned value is an L{Object} for a
    I{list} depending on whether the service returns a single object or a 
    collection.
@rtype: tuple ( L{Element}, L{Object} )