我正在尝试使用Spyne编写一个简单的python服务器,
我已经查看了hello world
示例,现在尝试做一些更复杂的事情。可悲的是,这里几乎没有例子(或者至少,我找不到任何有用的东西)
我将以下XML发送到服务器:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ObjectA xmlns="urn:SNSR_STD" ProtocolVersion="Undefined" MessageType="Undefined">
<ObjectB>
<field1>value1</field1>
<field2>value2</field2>
<field3/>
<field4/>
<field5/>
</ObjectB>
</ObjectA>
</s:Body>
</s:Envelope>
我的服务器服务看起来像这样: class ExampleService(ServiceBase):
@srpc(String, AnyXml, _returns=None)
def PrintObject(nothing, ObjectA):
print ObjectA
并且,尝试关注this问题,我创建了以下类(虽然我没有它们得到相同的结果):
namespace = 'http://www.w3.org/2001/XMLSchema-instance'
class ObjectB(ComplexModel):
__namespace__ = namespace
field1 = XmlAttribute(Unicode)
field2 = XmlAttribute(Unicode)
field3 = XmlAttribute(Unicode)
field4 = XmlAttribute(Unicode)
field5 = XmlAttribute(Unicode)
class ObjectA(ComplexModel):
__namespace__ = namespace
ObjectB = ObjectB
不幸的是,我得到一个奇怪的对象打印出来:<Element {my_application_tns}field1 at 0x431bee0>
并且在调试时我似乎无法找到任何孩子(或者我需要通过所有值)。
我在value1
字段下有text
。
我试图让函数获得更多AnyXml
参数,希望我能阅读所有这些参数 - 但无济于事。
我还尝试了其他值,而不是AnyXml
,例如XmlData
和XmlAttribute
,但它没有用。
使用XmlAttribute
我从AttributeError: type object 'XmlAttribute' has no attribute 'attribute_of'
获得spyne\model\complex.py, line 605, in __init__ a_of = v.attribute_of
。
使用XmlData
我从AttributeError: type object 'XmlData' has no attribute 'type'
获得spyne\model\complex.py, line 119, in resolve_namespace cls.type.resolve_namespace(cls.type, default_ns, tags)
。
任何帮助都将受到高度赞赏,谢谢:)