Как мне прочитать конверт ответа SOAP от PHP
Как мне прочитать код ошибки из этого конверта ответа SOAP? Моя версия PHP: 5.2.0.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<Response xmlns="http://xxx.gateway.xxx.abcd.com">
<return>
<transaction_id>1234567</transaction_id>
<error_code>109</error_code>
</return>
</Response>
</soap:Body>
</soap:Envelope>
Мне просто нужно прочитать значение тега error_code. Здесь значение:109
Я использую nusoap. Я использовал приведенный ниже код, но не работал должным образом:
$response=htmlspecialchars($client->response, ENT_QUOTES);
$xml = simplexml_load_string($response);
$ns = $xml->getNamespaces(true);
$soap = $xml->children($ns['soap']);
$error_code = $soap->body->children($ns['error_code']);
1 ответ
Решение
<?php
$string = <<<XML
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<Response xmlns="http://xxx.gateway.xxx.abcd.com">
<return>
<transaction_id>1234567</transaction_id>
<error_code>109</error_code>
</return>
</Response>
</soap:Body>
</soap:Envelope>
XML;
$xml = new SimpleXMLElement($string);
$xml->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");
$body = $xml->xpath("//soap:Body");
$error_code = (string)$body[0]->Response->return->error_code;
print_r($error_code);
?>
ИЛИ ЖЕ
$xml = simplexml_load_string($string);
$error_code = (string)$xml->children('soap', true)
->Body
->children()
->Response
->return
->error_code;