2017-03-02 30 views
-1

我已成功在nusoap中返回响应。我有请求是我如何摆脱nusoap响应中的额外<return>元素

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:B2BStandardApi"> 
<x:Header/> 
<x:Body> 
    <urn:getAccountValidationInput> 
     <urn:operationParameters> 
      <urn:TransactionReferenceCode>?</urn:TransactionReferenceCode> 
      <urn:TransactionDate>2017-03-02T00:00:00</urn:TransactionDate> 
     </urn:operationParameters> 
     <urn:accountInfo> 
      <urn:AccountNumber>00019</urn:AccountNumber> 
     </urn:accountInfo> 
     <urn:institution> 
      <urn:InstitutionCode>?</urn:InstitutionCode> 
      <urn:InstitutionName>?</urn:InstitutionName> 
     </urn:institution> 
    </urn:getAccountValidationInput> 
</x:Body> 

并且被如下所示的响应,

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Header>headerstring</SOAP-ENV:Header> 
<SOAP-ENV:Body> 
    <ns1:getAccountValidationOutput xmlns:ns1="urn:B2BStandardApi"> 
     <return> 
      <operationParameters> 
       <TransactionReferenceCode xsi:type="xsd:string">CICAM-000080</TransactionReferenceCode> 
       <TransactionDate xsi:type="xsd:string">2017-03-02 13:43:59+03:00</TransactionDate> 
       <TotalAmount xsi:type="xsd:float">0</TotalAmount> 
       <Currency xsi:type="xsd:string"></Currency> 
       <AdditionalInfo xsi:type="xsd:string"></AdditionalInfo> 
      </operationParameters> 
      <accountInfo xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[3]"> 
       <item> 
        <AccountNumber xsi:type="xsd:string">00017-002-00019-003</AccountNumber> 
        <AccountType xsi:type="xsd:string">Equity Fund</AccountType> 
       </item> 
       <item> 
        <AccountNumber xsi:type="xsd:string">00017-002-00019-004</AccountNumber> 
        <AccountType xsi:type="xsd:string">Fixed Income</AccountType> 
       </item> 
       <item> 
        <AccountNumber xsi:type="xsd:string">00017-004-00019-002</AccountNumber> 
        <AccountType xsi:type="xsd:string">Money Market</AccountType> 
       </item> 
      </accountInfo> 
      <institution> 
       <InstitutionCode xsi:type="xsd:string">CICAM</InstitutionCode> 
       <InstitutionName xsi:type="xsd:string">CIC ASSET MANAGEMENT</InstitutionName> 
      </institution> 
     </return> 
    </ns1:getAccountValidationOutput> 
</SOAP-ENV:Body> 

我想从效应初探删除多余的元件,所述expetected效应初探不应该有返回标记,

该服务在NuSoapPHP7上运行。

如何删除多余的元素

+0

你尝试过这么远吗? –

+0

您是否编写了生成响应的代码?如果没有,那么你必须处理他们给你的东西! – RiggsFolly

+0

Marcin Orlowski,我试着写了一个resposne类,它将序列化返回,但它给了一个空的响应,RiggsFolly,是的,我做到了。我有一个验证函数从数据库中获取数据并返回响应 – Ally

回答

0

一些挖后,我意识到发现,返回标签是从返回的参数,所有这一切都需要的是使用的输入参数作为回报。 初始注册显示为

$server->register(
"getAccountValidationInput", 
array("operationParameters" => "tns:operationParameters", "accountInfo" => "tns:accountInfo", "institution" => "tns:institution"), 
array("return" => "xsd:Array"), 
"urn:B2BStandardApi", 
"urn:B2BStandardApi#AccountValidation", 
"rpc", "literal", "Get member details by member number" 

);

根据以上所述,我被返回一个数组这将返回键作为XML元素内缠绕,

所需是

$server->register(
"getAccountValidationInput", 
array("operationParameters" => "tns:operationParameters", "accountInfo" => "tns:accountInfo", "institution" => "tns:institution"), 
array("operationParameters" => "tns:Parameters", "accountInfo"=>"tns:accounts", "institution"=>"institution"), 
"urn:B2BStandardApi", 
"urn:B2BStandardApi#AccountValidation", 
"rpc", "literal", "Get member details by member number" 

);

的返回值将作为

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Header>headerstring</SOAP-ENV:Header> 
<SOAP-ENV:Body> 
    <ns1:getAccountValidationOutput xmlns:ns1="urn:B2BStandardApi"> 
     <operationParameters> 
      <TransactionReferenceCode>CICAM-000114</TransactionReferenceCode> 
      <TransactionDate>2017-03-03 11:02:53+03:00</TransactionDate> 
      <TotalAmount>0</TotalAmount> 
      <Currency></Currency> 
      <AdditionalInfo/> 
     </operationParameters> 
     <accountInfo> 
      <item> 
       <AccountNumber>0001700200019004</AccountNumber> 
       <AccountName>Fixed Income</AccountName> 
      </item> 
     </accountInfo> 
     <institution> 
      <InstitutionCode>CICAM</InstitutionCode> 
      <InstitutionName>ASSET MANAGEMENT</InstitutionName> 
     </institution> 
    </ns1:getAccountValidationOutput> 
</SOAP-ENV:Body> 

相关问题