#php #xml #xsd #xml-parsing
#php #xml #xsd #xml-синтаксический анализ
Вопрос:
Редактировать Приведенный ниже код будет работать на 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);
?>
Комментарии:
1. Можете ли вы добавить некоторые из попыток, которые вы пробовали?
2.
var_dump
плохо работает с объектами SimpleXML, поэтому не обманывайтесь, ваш объект на самом деле не пуст. Посмотрите на примеры в руководстве о том, как получить элементы в XML: php.net/manual/en/simplexml.examples-basic.php3. SimpleXML отлично работал при использовании XML-данных без схемы. Но проблема в том, что присутствует xml-схема.
4. Попробуйте в конце использовать
$xml = simplexml_load_string($output);
, а затемecho $xml->asXML();
5. @NigelRen попробовал. но он выдает тот же результат,
echo $output
что и . Данные xml точно такие же, без изменений.