2014-09-29 79 views
1

我從SOAP WSDL呼叫響應:PHP SOAP響應 - 如何解讀它作爲變量

$client = new SoapClient($settings['address']); 
$params = new stdClass(); 
$params->Username = $settings['username']; 
$params->Password = $settings['password']; 
var_dump($client->Get_Brands($params)); 

下面是響應。如何在PHP中實際讀取它?我是否需要用DOMDocument來遍歷它,或者是否有像返回SOAP結果到對象或數組那樣的東西?

<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="Table"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="ID" type="xs:decimal" minOccurs="0"/> 
          <xs:element name="Description" type="xs:string" minOccurs="0"/> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:choice> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
    <DocumentElement xmlns=""> 
     <Table diffgr:id="Table1" msdata:rowOrder="0"> 
      <ID>1</ID> 
      <Description>Alfa Romeo</Description> 
     </Table> 

     <Table diffgr:id="Table2" msdata:rowOrder="1"> 
      <ID>2</ID> 
      <Description>Alpina</Description> 
     </Table> 
    </DocumentElement> 
</diffgr:diffgram> 

回答

-1

您應該傳遞有效的WSDL定義作爲SoapClient()的第一個參數。 你也可以設置一些特定的選項作爲第二個參數(例如soap_version)。 通常不需要解析SOAP響應 - 您應該得到某種類型的方法結果。 但是,如果無效SoapClient中的SOAP響應無法自動識別並解析它,則可能需要使用DOMDocument或SimpleXML手動解析它。

+0

什麼是有效的WSDL定義以及爲什麼我應該通過它?第二個論點是什麼和什麼額外的通過?你什麼意思不需要解析?我得到的Web服務只是返回XML數據庫行,這是我可以得到這些信息的唯一方式,但是有沒有一些類爲程序員提供序列化XML輸出緩解? – 2014-09-29 22:45:41