如何创建包含多个命名空间的类型
How to create a type that contains multiple namespaces
我正在尝试接收和生成具有以下架构的消息:
<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()
和朋友,我想我知道是什么原因造成的,但我不知道如何修复它,甚至无法解决它。
我认为这和我遇到的是同一个问题,我通过定义
解决了它
class NS2RPCCall(NS2ComplexModel):
class Attributes(NS2ComplexModel.Attributes):
sub_ns = NS1ComplexModel.__namespace__
这是通过查看 spyne.protocol.xml.XmlDocument._get_members_etree
和 spyne.model.complex._gen_attrs
。
我正在尝试接收和生成具有以下架构的消息:
<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()
和朋友,我想我知道是什么原因造成的,但我不知道如何修复它,甚至无法解决它。
我认为这和我遇到的是同一个问题,我通过定义
解决了它class NS2RPCCall(NS2ComplexModel):
class Attributes(NS2ComplexModel.Attributes):
sub_ns = NS1ComplexModel.__namespace__
这是通过查看 spyne.protocol.xml.XmlDocument._get_members_etree
和 spyne.model.complex._gen_attrs
。