【问题标题】:Spyne: Spyne: XML/XSD schema ValidationSpyne: Spyne: XML/XSD 模式验证
【发布时间】:2023-03-27 08:35:01
【问题描述】:

我的测试 spyne soap 服务器侦听一个发送肥皂请求的客户端,就像这样:

<EventMessage>
   <Header>
      <Timestamp>2016-01-12T18:22:58.1909735-02:00</Timestamp>
   </Header>
   <MainData>
      <Events>
         <InfoEvent>
            <createdDateTime>2016-01-12T18:22:58.1909735-02:00</createdDateTime>
            <Credential>
               <Names>
                  <name>Bruce Wayne</name>
               </Names>
            </Credential>
            <Details>
               <name>Travel to europe</name>
               <value>Five hundred Euros</value>
            </Details>
            <EventCode ref="323.243.1327.524"/>
         </InfoEvent>
      </Events>
   </MainData>
</EventMessage>

我正在尝试创建验证架构,但我无法将“ComplexModel”插入另一个“ComplexModel

如何将标签“Name”放入“Credential”、“Infoevent”和“Events”?

我正在尝试:

class InfoEvent(ComplexModel):
     createdDateTime = String
    #InfoEvent =  Array(Events, wrapped=False)

class Events(ComplexModel):
    InfoEvent =  Array(InfoEvent, wrapped=False)

class Header(ComplexModel):
    Timestamp = String

class EventMessage(ComplexModel):
    __namespace__ = 'http://iec.ch/TC57/2011/schema/message'

    Header = Header
    MainData = Array(Events, wrapped=False)

但结果是:

  <xs:complexType name="Header">
    <xs:sequence>
      <xs:element name="Timestamp" type="xs:string" minOccurs="0" nillable="true"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="InfoEvent">
    <xs:sequence>
      <xs:element name="createdDateTime" type="xs:string" minOccurs="0" nillable="true"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Events">
    <xs:sequence>
      <xs:element name="InfoEvent" type="tns:InfoEvent" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Header" type="tns:Header"/>
  <xs:element name="InfoEvent" type="tns:InfoEvent"/>
  <xs:element name="Events" type="tns:Events"/>

有人可以帮帮我吗?

【问题讨论】:

    标签: python soap xsd-validation spyne


    【解决方案1】:

    在您的服务中,尝试将 polymorphic = True 添加到出站协议。

    app = Application([service],
                      'whatever.whatever',
                      in_protocol=Soap11(validator='lxml'),
                      out_protocol=Soap11(polymorphic=True)
                     )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多