Строка XML пуста после синтаксического анализа SimpleXML в php

Используя PHP, я обращаюсь к API. Я использую для этого curl, и ответ должен быть в формате XML. Но ответ на мой звонок - это строка, содержащая XML-контент. Поэтому я хотел разобрать его с помощью simplexml_load_string. Но затем я получаю пустой объект:

object(SimpleXMLElement)#839 (0) { }

Это мой призыв:

$curl = curl_init($this->api_base . $this->endpoint);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_setopt($curl, CURLOPT_USERPWD, $this->get_auth_string());
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Content-Type: application/xml',
    'Accept: application/xml',
    'Connection: Keep-Alive'
]);
$response = curl_exec($curl);
$curl_error = curl_error($curl);
curl_close($curl);

Что не так с этим? Как я могу получить реальный XML для прохождения через цикл?

проверьте это: stackoverflow.com/questions/561816/…

lovelace 26.06.2018 10:47

Это похоже на результат, который вы получили бы, если бы вы запустили simplexml_load_string над одним пустым XML-элементом (например, <foo />) - если бы ваш вызов Curl вообще не возвращал XML, вы бы получили false вместо объекта. Действительно ли ценность $response соответствует вашим ожиданиям? Важно отметить, что использование встроенных инструментов отладки, таких как var_dump, - плохая идея, поскольку они не дают вам полного представления об объекте. Вы также могли бы увидеть это, если бы ваш документ был помещен в пространство имен, см. stackoverflow.com/questions/44894426/…

iainn 26.06.2018 10:55

@iainn да, ответ (строка) - это именно то, что я ожидал, и правильный полный XML-документ

FZC3 26.06.2018 11:13

@lovelace: Я думаю, этот код похож на мой ... но мой не работает

FZC3 26.06.2018 11:16

@ FZC3 Похоже, тогда это пространство имен. var_dump не будет отображать дочерние элементы и атрибуты XML-документа с пространством имен, но это не означает, что их там нет (см. eval.in/1028340). Вам нужно использовать внутренние функции SimpleXML для его анализа - ссылка на другой вопрос, который я опубликовал выше, содержит гораздо больше деталей.

iainn 26.06.2018 11:17

Ответ @iainn: <search:search-result xmlns:seller = "http://services.mobile.de/schema/seller" xmlns:ad = "http://services.mobile.de/schema/ad" xmlns:search = "http://services.mobile.de/schema/search" xmlns:financing = "http://services.mobile.de/schema/common/fin‌​ancing-1.0" xmlns:resource = "http://services.mobile.de/schema/resource" xmlns:error = "http://services.mobile.de/schema/common/error-1‌​.0"><search:total>2<‌​/search:total><searc‌​h:page-size>20</sear‌​ch:page-size><search‌​:max-pages>1</search‌​:max-pages><search:a‌​ds>...</search:ads><‌​/search:search-resul‌​t> ----- Мне нужно зациклить <поиск: объявления>

FZC3 26.06.2018 11:24

@iainn Я пробовал использовать пространства имен, как в вашем примере, но цикл ничего не выводит ...

FZC3 26.06.2018 11:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
48
0

Другие вопросы по теме