我无法将SOAP响应转换为php中的Array。
这是代码
$response = $client->__doRequest($xmlRequest,$location,$action,1);
这是SOAP响应。
<soap:envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <searchflightavailability33response xmlns="http://FpwebBox.Fareportal.com/Gateway.asmx"> <searchflightavailability33result> <Fareportal><FpSearch_AirLowFaresRS><CntKey>1777f5a7-7824-46ce-a0f8-33d5e6e96816</CntKey><Currency CurrencyCode="USD"/><OriginDestinationOptions><OutBoundOptions><OutBoundOption segmentid="9W7008V21Feb14"><FlightSegment etc.... </searchflightavailability33result> </searchflightavailability33response> </soap:body> </soap:envelope>;
我使用以下方法将其转换为数组,但输出为空。
1.echo '<pre>';print_r($client__getLastResponse()); 2.echo '<pre>';print_r($response->envelope->body->searchflightavailability33response); 3.echo '<pre>';print_r($client->SearchFlightAvailability33($response)); 4.simplexml_load_string($response,NULL,NULL,"http://schemas.xmlsoap.org/soap/envelope/"); 5.echo '<pre>';print_r($client->SearchFlightAvailability33($response));
请给我建议。
终于我找到了解决方案
我们可以通过以下方式从SOAP获得响应主体
范例1:
$xml = new SimpleXMLElement($soapResponse); foreach($xml->xpath('//soap:body') as $header) { $output = $header->registerXPathNamespace('default', 'http://FpwebBox.Fareportal.com/Gateway.asmx'); }
示例2:
$doc = new DOMDocument('1.0', 'utf-8'); $doc->loadXML( $soapResponse ); $XMLresults = $doc->getElementsByTagName("SearchFlightAvailability33Response"); $output = $XMLresults->item(0)->nodeValue;