如果我写错了标题,我很抱歉,我不熟悉 SOAP 响应和它的类型。但我想这是一个 WSDL 响应,至少我是从 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 代码部分是正确的。我得到了正确数量的“Journey”,但 $item 本身是空的。
有什么解决办法吗?请不要建议使用 SoapClient 来检索结果。我无法从 curl_multi 移动。我已经有了结果,我需要解析它。先感谢您