simplexml_load_string() просто хранит строку xml-проблемы

#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() и она работала нормально.