2012-11-25 66 views
3

如果我犯了錯誤的標題,我很抱歉,我不熟悉SOAP響應和它的類型。但我想這是一個WSDL反應,至少我是從WSDL鏈接...使用PHP解析來自WSDL的響應

我有以下網址 http://somedomain.com/j.svc?wsdl

後,我用curl_multi提出的要求,我得到了以下回應。響應縮短到兩個結果,因此會更容易閱讀

的響應是如下:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <GetJourneyListResponse xmlns="http://tempuri.org/"> 
      <GetJourneyListResult xmlns:a="http://schemas.datacontract.org/2004/07/DreamFlightWCF" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
       <a:Journey> 
       <a:FromAirport>LHR</a:FromAirport> 
       <a:TotalPrice>146</a:TotalPrice> 
       </a:Journey> 
       <a:Journey> 
       <a:FromAirport>LHR</a:FromAirport> 
       <a:TotalPrice>155</a:TotalPrice> 
       </a:Journey> 
      </GetJourneyListResult> 
     </GetJourneyListResponse> 
    </s:Body> 
</s:Envelope> 

是否有機會使用PHP解析結果呢?我做了很多搜索,包括StackOverflow,這裏是我設法找到的。

爲了解析上述響應我可以使用以下代碼:

$xml = simplexml_load_string($result); 
$xml->registerXPathNamespace('flight','http://schemas.datacontract.org/2004/07/DreamFlightWCF'); 
    foreach ($xml->xpath('//flight:Journey') as $item){ 
    print_r($item); 
    } 

似乎上述PHP代碼塊是通過部分地正確的。我獲得了正確數量的「旅程」,但是它自己的$ item是空的。

任何解決方案?請不要建議使用SoapClient來檢索結果。我無法從curl_multi移動。我已經有了結果,我需要解析它。預先感謝您

回答