Невозможно получить доступ к атрибутам из XML-ответа, используя simplexml_load_string

Я пытаюсь использовать simplexml_load_string для получения значений Status и Text из следующего XML-ответа;

<?xml version="1.0" encoding="utf-16"?>
<cXML payloadID="online" xml:lang="en" timestamp="2017-12-04T15:57:47.6693296+00:00">
<Response>
<Status code="402" text="&#x9;&#xA; product 325552not in customer[20690]  pricelist" />
</Response>
</cXML>

В моем PHP-коде я получаю XML выше из $ reply:

$reply = curl_exec($curl);

Затем я использую simplexml_load_string следующим образом:

$responseData = simplexml_load_string($reply);
echo 'Sync Order - '. $order->getIncrementId() . ' Status '. $responseData->Response->Status['code'] .' - '. $responseData->Response->Status['text'];

Но это не похоже на код и текст из XML-ответа выше. Хотите знать, если у кого-нибудь есть идеи, чтобы помочь?

Спасибо.

Примечание: CXML правильный.

0

Решение

Я пробовал это с добавленным заголовком xml и битом кодировки UTF-16, и он не может загрузить с ошибкой …

Предупреждение PHP: simplexml_load_string (): Сущность: строка 1: ошибка синтаксического анализатора:
Документ помечен UTF-16, но содержит содержимое UTF-8 в

Простой, но грубый способ это изменить UTF в элементе xml на UTF8 …

$reply = preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $reply);
$responseData = simplexml_load_string($reply);

Это тогда дает результат, как и ожидалось …

 Status 402 -
product 325552not in customer[20690]  pricelist
0

Другие решения

Других решений пока нет …