SOAP解析PHP中
问题描述:
我在PHP创建SOAP客户端:SOAP解析PHP中
$client = new SoapClient("http://xxxx.net/Service/Service.svc?wsdl");
$response= $client->GetHotelNugget($data);
但我不能解析响应。我需要<a:TITLE>
标记值。 SOAP客户机的
输出:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetHotelNuggetResponse xmlns="http://tempuri.org/">
<GetHotelNuggetResult xmlns:a="http://schemas.datacontract.org/2004/07/Model" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:HotelNugget>
<a:NUGGETNAME>Yaz Tatili Otelleri</a:NUGGETNAME>
<a:NUGGETORDER>10</a:NUGGETORDER>
<a:PARENTUNIQUECODE>AS_SOL_UST</a:PARENTUNIQUECODE>
<a:REWRITENUGGETNAME>yaz-tatili-otelleri</a:REWRITENUGGETNAME>
<a:TITLE>Yaz Tatili Otelleri</a:TITLE>
<a:UNIQUECODE>YTOTL</a:UNIQUECODE>
<a:WEBNUGGETID>306</a:WEBNUGGETID>
</a:HotelNugget>
<a:HotelNugget>
<a:NUGGETNAME>Ramazan Fırsatları</a:NUGGETNAME>
<a:NUGGETORDER>20</a:NUGGETORDER>
<a:PARENTUNIQUECODE>AS_SOL_UST</a:PARENTUNIQUECODE>
<a:REWRITENUGGETNAME>ramazan-firsatlari</a:REWRITENUGGETNAME>
<a:TITLE>Ramazan Fırsatları</a:TITLE>
<a:UNIQUECODE>RFIR</a:UNIQUECODE>
<a:WEBNUGGETID>308</a:WEBNUGGETID>
</a:HotelNugget>
<a:HotelNugget>
<a:NUGGETNAME>Ramazan Bayramı Otelleri</a:NUGGETNAME>
<a:NUGGETORDER>30</a:NUGGETORDER>
<a:PARENTUNIQUECODE>AS_SOL_UST</a:PARENTUNIQUECODE>
<a:REWRITENUGGETNAME>ramazan-bayrami-otelleri</a:REWRITENUGGETNAME>
<a:TITLE>Ramazan Bayramı Otelleri</a:TITLE>
<a:UNIQUECODE>RBO</a:UNIQUECODE>
<a:WEBNUGGETID>283</a:WEBNUGGETID>
</a:HotelNugget>
</GetHotelNuggetResult>
</GetHotelNuggetResponse>
</s:Body>
</s:Envelope>
答
尝试下面的代码,并检查print_r
值
$xmlResp = simplexml_load_string($response);
$jsonResp = json_encode($xmlResp);
$arrResp = json_decode($jsonResp);
foreach($arrResp as $k=>$v) {
print_r($v);
}
然后,您可以通过一些访问TITLE标签内的foreach像下面
$v['HotelNugget']['TITLE'];
+0
错误:类stdClass的对象无法转换为字符串 – enginar 2012-08-05 16:21:58
这看起来像XML输出。你得到什么'var_dump($ response)'? – hakre 2012-08-05 16:04:34
var_dump return is;对象(stdClass)#2(1){[“GetHotelNuggetResult”] => object(stdClass)#3(0){}} – enginar 2012-08-05 16:07:55
WSDL定义中可能缺少'GetHotelNuggetResult'? http://tempuri.org/并不是很好。 – hakre 2012-08-05 16:21:28