How to convert SOAP response to PHP Array?

php, soap, soap-client, xml

Solution

finally i found the solution is

we can get body of the response from SOAP the following ways

example1:

$xml = new SimpleXMLElement($soapResponse);
foreach($xml->xpath('//soap:body') as $header) {
    $output = $header->registerXPathNamespace('default', 'http://FpwebBox.Fareportal.com/Gateway.asmx');    
}

example2:

$doc = new DOMDocument('1.0', 'utf-8');
    $doc->loadXML( $soapResponse );
    $XMLresults     = $doc->getElementsByTagName("SearchFlightAvailability33Response");
    $output = $XMLresults->item(0)->nodeValue;

Problem

I am unable to convert SOAP response to Array in php. here is the code ``` $response = $client->__doRequest($xmlRequest,$location,$action,1); ``` here is the SOAP response. ``` <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> &lt;Fareportal&gt;&lt;FpSearch_AirLowFaresRS&gt;&lt;CntKey&gt;1777f5a7-7824-46ce-a0f8-33d5e6e96816&lt;/CntKey&gt;&lt;Currency CurrencyCode="USD"/&gt;&lt;OriginDestinationOptions&gt;&lt;OutBoundOptions&gt;&lt;OutBoundOption segmentid="9W7008V21Feb14"&gt;&lt;FlightSegment etc.... </searchflightavailability33result> </searchflightavailability33response> </soap:body> </soap:envelope>; ``` i used the following ways to convert to Array,but i am getting empty output. ``` 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)); ``` please advice me.

Original source