0

私はSOAPフレームワークに比較的慣れておらず、Spynesのドキュメントを読んで、次のリクエストを受け入れるサービスを構築する方法を見つけようとしています:

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://..." xmlns:xsi=http:/..." xmlns:xsd="http://...">
<SOAP-ENV:Body>
    <modifyRequest returnData="everything" xmlns="urn:...">
      <attr ID="..."/>
      <data>
      </data>
    </modifyRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

私はドキュメントを読みましたが、これを処理するために何かをまとめる方法を理解するのに十分な複雑な例を見たことがありません. <attr ID="..."/>タグは ID 属性用に処理する必要があり、タグ<data>には追加の xml のさまざまなコレクションが含まれています。サービスを正式に定義する方が良いことは理解していますが、今のところ、タグに含まれるものを受け入れるために anyXML (?) を使用したいと考えていました。データ タグ内に含まれる xml ペイロードと共に ID 属性を受け入れて処理する必要があります。

ご指導いただきありがとうございます。

4

1 に答える 1

0

方法は次のとおりです。

NS = 'urn:...'

class Attr(ComplexModel):
    __namespace__ = NS
    _type_info = [
        ('ID', XmlAttribute(UnsignedInteger32)),
    ]

class ModifyRequest(ComplexModel):
    __namespace__ = NS
    _type_info = [
        ('returnData', XmlAttribute(Unicode(values=['everything', 'something', 'anything', 'etc']))),
        ('attr', Attr),
        ('data', AnyXml),
    ]


class SomeService(ServiceBase):
    @rpc(ModifyRequest, _body_style='bare')
    def modifyRequest(ctx, request):
        pass

これには Spyne 2.11 が必要ですが_body_style='bare'、2.10 以前では問題があります。

于 2014-04-30T09:54:37.507 に答える