Я пытаюсь использовать 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="	
 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 правильный.
Я пробовал это с добавленным заголовком 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
Других решений пока нет …