PHP: преобразование SOAP ответа к SimpleXMLElement

362
17 апреля 2017, 06:32

Добрый день!

Задача следующая, имеется клиент, который общается с сервером через SOAP. Необходимо ответ интерпретировать как XML (для дальнейшего разбора). Код, которым отправляю запрос и обрабатываю ответ:

ini_set('soap.wsdl_cache_enabled', '0'); 
ini_set('soap.wsdl_cache_ttl', '0'); 
$client = new SoapClient($wsdl , array( 'exceptions' => 1,'trace' => 1,'login' => $login, 'password' => $password); 
var_dump( $client->__getFunctions());
$params["Login"] = '123';
$params["Password"] = '2134';
$result = $client->GetLogin($params);
$xml=$client->__getLastResponse();
$doc= simplexml_load_string($xml);

echo $xml возвращает:

<?xml version="1.0" encoding="UTF-8"?> 
<Request> <Status>Confirm</Status> 
<Message>Авторизация прошла успешно!</Message> 
<ID>279f6b3a-0a13-11e7-a67e-0050568623d9</ID> </Request> 

print_r($doc) возвращает:

SimpleXMLElement Object ( )

Т.е. на выходе создался пустой объект. Ошибок через libxml_get_errors не увидел.

В чем может быть проблема? Почему объект не создался корректно?

Спасибо!

Answer 1

попробуйте так

$sxe = new SimpleXMLElement($xml);  $output = $sxe->asXML();
Answer 2

Всем спасибо за помощь. Проблема оказалась значительно проще, чем я тут описал.

Дело в том, что SOAP response возвращает в блоке return XML в виде строки, а не с тэгами. Поэтому print_r ($result)/var_dump выводил конечный результат экранируя тэги. Что реально содержится в этой переменной можно было записал ее в файл. В итоге было достаточно сделать: $ParamsUsr = new SimpleXMLElement($result->return);

READ ALSO
Добавление значения переменной в БД

Добавление значения переменной в БД

Переменная slug будет содержать ЧПУ, как сохранить ее в БД, если ее значение не будет получено из view, а сгенерированно в методе контроллера?

211
Декодирование JSON со вставками массива

Декодирование JSON со вставками массива

Пытаюсь работать с VK APIНо их JSON приходит со множеством массивов в которых другие массивы

224
Как правильно сделать переключатели в php?

Как правильно сделать переключатели в php?

Здравствуйте, столкнулся с такой проблемой

282
json_encode в opencart

json_encode в opencart

Добрый вечер!

316