如何将SOAP响应转换为PHP Array?

我无法将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>

&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>;

我使用以下方法将其转换为数组,但输出为空。

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;

以上是 如何将SOAP响应转换为PHP Array? 的全部内容, 来源链接: utcz.com/qa/412685.html

回到顶部