我不得不说,我一整天都对这个问题感到沮丧。我正在工作的一个网站使用基于REST的API来接收公司数据。使用cURL,我可以收到XML请求和响应。
然而,一旦我尝试使用simplexml_load_string()
将XML更改为数组,它就只将XML作为字符串存储在数组的一个索引中。下面,您可以看到我的代码以及Google Chrome开发工具中阵列外观的打印屏幕。
代码:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "requestXmlStr={$xml_data}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$searchResults = simplexml_load_string($output);
exit(print_r($searchResults));
exit(print_r($searchResults))
仅在页面上显示以下内容:
SimpleXMLElement对象([0]=>
2014年6月24日15:47:38 companysearch UK 6.0 www.creditsafe.com
1 1 1 25 PSR DESIGN LIMITED 08821170英国
哈兹勒梅尔70 CHORLEY新路
BOLTON LANCASHIRE BL1 4BY None Filed Active-New Incorporated(1
以下是它在谷歌开发者工具中的样子:
http://i59.tinypic.com/30k36af.png
有什么想法吗?
自己发现了问题。原来返回的XML字符串使用的是HTML实体,我愚蠢地没有意识到。在通过simplexml_load_string()
运行XML字符串之前,先通过html_entity_decode()
运行XML字符串,结果运行良好。