2015-04-23 105 views
1

我试图接收和生成,可以有以下模式的消息:如何创建一个包含多个命名空间类型

<ns1:data> 
    <ns1:status-change/> 
    <ns2:rpc-call/> 
</ns1:data> 

那么我:

class NS1ComplexModel(ComplexModel): 
    __namespace__ = 'ns1' 

class NS1Data(NS1ComplexModel): 

    statusChange = NS1StatusChange 
    rpcCall = NS2RPCCall 

class NS1StatusChange(NS1ComplexModel): 
    ... 

但结果这是有名称空间ns1而不是ns2

我一直在寻找resolve_namespace()和朋友,我想我知道是什么原因造成的,但我无法弄清楚如何修复它甚至解决它。

回答

2

认为这是我有同样的问题,我定义

class NS2RPCCall(NS2ComplexModel): 
    class Attributes(NS2ComplexModel.Attributes): 
     sub_ns = NS1ComplexModel.__namespace__ 

这是在看spyne.protocol.xml.XmlDocument._get_members_etreespyne.model.complex._gen_attrs解决它。

+0

这是正确的,但我建议在父节点(本例中为'NS1Data')对象内嵌入'rpcCall = NS2RPCCall.customize(sub_ns =“NS2”)''。 –

相关问题