Получить значение от SOAP Ответ с помощью PHP - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь получить 'ErrorDetail' из приведенного ниже ответа soap, но у меня не работает. Я получаю ответ хорошо. Я пробовал это.

 $response = curl_exec($ch);
   $response_xml = str_replace("<SOAP-ENV:Body>","", $response);
   $response_xml = str_replace("</SOAP-ENV:Body>","", $response_xml);
   $return = simplexml_load_string($response_xml);
   $value = (string) $return->lodgeWithCertificateResponseType->Notification->Id;
   $status = (string) $return->lodgeWithCertificateResponseType->Notification->Status;
   $error = (string) $return->detail->fault->ErrorMessage;

И ответ Soap

string(617) "<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring xml:lang="en">Validation error</faultstring>
<detail>
<fault xmlns:ns3="http://bdm.nsw.gov.au/Schemas/CommonTypes_v1.0" xmlns:ns4="http://bdm.nsw.gov.au/Schemas/StatusQuery_v1.0">
<ErrorMessage>Validation error</ErrorMessage>
<ErrorDetail>Deceased's family name at birth must be in capitals</ErrorDetail>
<ErrorDetail>Deceased's Family Name must be in capitals</ErrorDetail>
</fault>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"
object(SimpleXMLElement)#1 (0) {
}

Любая помощь будет с благодарностью оценена

1 Ответ

0 голосов
/ 01 мая 2020

Попробуйте что-то вроде этого:

$string = <<<XML
[your SOAP response above]
XML;

$xml = simplexml_load_string($string);
$results = $xml->xpath('//fault/ErrorDetail');
$err = $results[0]->xpath('./preceding-sibling::ErrorMessage/text()');   
echo $err[0]."\r\n";
foreach($results as $result) {
   echo $result;
   echo "\r\n";
}

Вывод:

Validation error 
Deceased's family name at birth must be in capitals
Deceased's Family Name must be in capitals
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...