如何正确获得Spyne多态性标签名



有没有办法从我的spyne类定义中获取特定的类标签名称?

给出了这种情况,我的类层次结构看起来像:

# models.py
class Vehicle(ComplexModel):
    ...
class Car(Vehicle):
    ...
class Bike(Vehicle):
    ...

然后我按照此问题的回答中的说明,因为他们的问题似乎相似,以使多态性起作用。

如何在Spyne中实现抽象模型

您如何@RPC _returns spyne中的多态类型?

已更改的重要代码线:

# start.py
application=Application(
    ...
    in_protocol=Soap11(...),
    out_protocol=Soap11(polymorphic=True)
)

到目前为止,一切都很好。完成此操作之后,我得到了以下答复:

<!-- Response.xml -->
...
<Vehicle xsi:type="Car">
    ...
</Vehicle>
...

所以我的问题是:

我可以摆脱一般类名称Vehicle作为标签名称,并获取特定类的名称,例如Car代替标签名称?

因此,响应应该是这样的:

<Car>
    ...
</Car>

我已经看到了``ctx.out_string''的一些方法,并在此问题中进行了一些文本替换:

从spyne响应变量中删除名称空间

我认为这可能对我有好处,但是如果API中有一种"常规"方式,我还没有找到它,我希望知道它使用它。

这是XML多态性应该如何工作的方式。libxml2的架构验证器(通过LXML使用)应正确解释它。

OTOH,如果您确定只想通过标签名称进行区分,请查看<choice>标签:http://w3.org/tr/xmlschema-1/#declare-contentmodel

还请参阅一篇文章,比较两种方法:http://ibm.com/developerworks/library/ws-tip-xsdchoice

您似乎已经弄清楚了如何在Spyne中使用多态性。因此,这是您使用<choice>标签:https://github.com/arskom/spyne/blob/57ef5c0db51cb19435353c67d3179990fe89bc4177d/

最新更新