#php #xml #curl
#php #xml #curl
Вопрос:
Я должен сказать, что весь день был разочарован этой проблемой. Веб-сайт, над которым я работаю, использует API на основе REST для получения данных компании. Используя 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] =>
24/06/2014 15:47:38 поиск компаний в Великобритании 6.0 www.creditsafe.com
1 1 1 25 PSR DESIGN LIMITED 08821170 ВЕЛИКОБРИТАНИЯ
ХЭЗЛМИР 70 ЧОРЛИ НЬЮ РОУД
БОЛТОН ЛАНКАШИР BL1 4BY Нет активных — Недавно зарегистрирован ) 1
Ниже показано, как это выглядит в инструментах разработчика Google:
http://i59.tinypic.com/30k36af.png
Есть идеи?
Ответ №1:
Нашел проблему сам. Оказывается, возвращаемая строка XML использовала HTML-объекты, и я тупо не понял. Прогнал строку XML html_entity_decode()
перед ее запуском, simplexml_load_string()
и она работала нормально.