如何创建包含多个命名空间的类型

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_etreespyne.model.complex._gen_attrs