嵌套复杂类型的Python suds XML元素不是在SOAP信封中创建的

时间:2015-11-16 21:53:05

标签: python soap xsd wsdl suds

我在使用suds-jurkosuds的一个分支)来处理SOAP服务时出现问题,并且正在运行一些似乎与wsdl中嵌套复杂类型的存在相关的问题。

这是wsdl中定义的违规服务:

<?xml version="1.0" encoding="UTF-8"?>
  <definitions name="FormHandler" targetNamespace="http://grid.agnis.net/FormHandler">
  <import namespace="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" location="FormHandler?wsdl=ServiceSecurity.wsdl">
    </import>
  <types>
    <schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://grid.agnis.net/FormHandler">
      <import namespace="gme://forms.AGNIS/2.0/net.agnis.forms" schemaLocation="FormHandler?xsd=net.agnis.forms.xsd"/>
        <element name="SubmitFormRevisionRequest">
          <complexType>
            <sequence>
              <element name="formRevision">
                <complexType>
                  <sequence>
                    <element maxOccurs="1" minOccurs="1" ref="ns0:FormRevision"/>

因此基本上<ns0:FormRevision>元素嵌套在<formRevision>内(取自当前命名空间)

我应该得到这个:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="gme://forms.AGNIS/2.0/net.agnis.forms" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://grid.agnis.net/FormHandler" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns2:SubmitFormRevisionRequest>
         <ns2:formRevision>
            <ns0:FormRevision>
                <ns0:form publicId="4637831" version="1.0">
                   <ns0:originator uniqueName="cibmtr_center_number:XXX"/>
                </ns0:form>

但是当我打印出信封时,我得到以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="gme://forms.AGNIS/2.0/net.agnis.forms" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://grid.agnis.net/FormHandler" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns2:SubmitFormRevisionRequest>
         <ns2:formRevision>
              <form publicId="4637831" version="1.0">
                 <originator uniqueName="cibmtr_center_number:XXX"/>
              </form>

注意缺少<ns0:FormRevision>元素? (以及其他元素的名称空间:ns0

有人可以协助我解决这个问题吗?

谢谢!

JP

0 个答案:

没有答案