Разбор XML-ответа с помощью XML-схемы - PullRequest
0 голосов
/ 12 апреля 2019

Редактировать Код, приведенный ниже, будет работать в localhost как есть, если кто-то захочет скопировать и попробовать его. Указанные учетные данные действительны.

У меня есть php-код, который запрашивает данные у службы API.Запрос XML отправляется, и в ответ получаются данные XML.Я сохранил данные respose в переменной $output.При выполнении echo $output информация в ответе XML печатается.Но теперь мне нужно разобрать этот ответ и сохранить необходимые данные в переменных.Например: мне нужно сохранить значение $customer_id = из <customer_id>12345</customer_id>.Я провел тщательный поиск в Google и попробовал все фрагменты, предоставленные разными разработчиками, но безрезультатно.

Я пытался var_dump(simplexml_load_string($output));, и он возвращает object(SimpleXMLElement)#1 (0) { }.Я даже пытался преобразовать данные XML в массив.

index.php

    <?php

        $appId ="MFS149250";
        $appPass ="5TEBRPCZ";
        $brokeCode ="ARN-149250";
        $iin = "5011217983";


    $xml_data = '<?xml version="1.0" encoding="UTF-8"?>
                <NMFIIService>
                    <service_request>
                        <appln_id>'.$appId.'</appln_id>
                        <password>'.$appPass.'</password>
                        <broker_code>'.$brokeCode.'</broker_code>
                        <iin>'.$iin.'</iin>
                    </service_request>
                </NMFIIService>';



      $URL = "https://uat.nsenmf.com/NMFIITrxnService/NMFTrxnService/IINDETAILS";
                $ch = curl_init($URL);
                curl_setopt($ch, CURLOPT_MUTE, 1);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
                curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                $output = curl_exec($ch);
                //echo "<textarea>".$output."</textarea>";
                echo $output;
                var_dump(simplexml_load_string($output));
                curl_close($ch);
?>
...