PHP如何解析 WEBSERVICES接口返回的数据
程序员文章站
2024-04-06 12:56:07
...
WEBSERVICE服务器,他们用.net写了个接口 http://XXX.XXX.XXX.XX/Info.asmx?wsdl
我用PHP调用这个接口
得到如下结果:
[any] => 后面不像是个标准的XML。请问,用PHP怎么拿出这些值呢?
没有少哦,接口就是这样返回的
版主,能给个示例吗?
我用PHP调用这个接口
try{ $wsdl = "http://XXX.XXX.XXX.XX/Info.asmx?wsdl"; $client = new SoapClient($wsdl); $param = array('strName'=>'吴小明', 'strIDCard'=>'4528XXXXXXXX', 'decZiparea'=>'450900'); $res = $client->GetBasicInfo($param); print_r($res);}catch(SOAPFault $e){ var_dump($e);}
得到如下结果:
stdClass Object( [GetBasicInfoResult] => stdClass Object ( [any] =>)) 4507………… 4507………… 吴…… 男性 4528………… 1966-03-10T00:00:00+08:00 道路………… 2011-05-23T00:00:00+08:00 2011-05-23T00:00:00+08:00 2017-05-22T00:00:00+08:00 钦州市………… AAA级 C1证
[any] => 后面不像是个标准的XML。请问,用PHP怎么拿出这些值呢?
回复讨论(解决方案)
您给出的数据缺少根节点,自己补上吧
数据分为两部分,第一部分是数据类型声明,第二部分是数据
我们关心的是第二部分
用 SimpleXMLElement 可得
SimpleXMLElement Object( [DocumentElement] => SimpleXMLElement Object ( [Employee] => SimpleXMLElement Object ( [ID_ECERT] => 4507………… [ECERTID] => 4507………… [NAME] => 吴…… [SEX] => 男性 [IDCARD] => 4528………… [BIRTHDAY] => 1966-03-10T00:00:00+08:00 [ECERTAREA] => 道路………… [FIRSTDATE] => 2011-05-23T00:00:00+08:00 [BEGINDATE] => 2011-05-23T00:00:00+08:00 [ENDDATE] => 2017-05-22T00:00:00+08:00 [GRANTORGAN] => 钦州市………… [CREDITLEVEL] => AAA级 [DRVLICENSE] => C1证 ) ))
您给出的数据缺少根节点,自己补上吧
数据分为两部分,第一部分是数据类型声明,第二部分是数据
我们关心的是第二部分
用 SimpleXMLElement 可得
SimpleXMLElement Object( [DocumentElement] => SimpleXMLElement Object ( [Employee] => SimpleXMLElement Object ( [ID_ECERT] => 4507………… [ECERTID] => 4507………… [NAME] => 吴…… [SEX] => 男性 [IDCARD] => 4528………… [BIRTHDAY] => 1966-03-10T00:00:00+08:00 [ECERTAREA] => 道路………… [FIRSTDATE] => 2011-05-23T00:00:00+08:00 [BEGINDATE] => 2011-05-23T00:00:00+08:00 [ENDDATE] => 2017-05-22T00:00:00+08:00 [GRANTORGAN] => 钦州市………… [CREDITLEVEL] => AAA级 [DRVLICENSE] => C1证 ) ))
没有少哦,接口就是这样返回的
您给出的数据缺少根节点,自己补上吧
数据分为两部分,第一部分是数据类型声明,第二部分是数据
我们关心的是第二部分
用 SimpleXMLElement 可得
SimpleXMLElement Object( [DocumentElement] => SimpleXMLElement Object ( [Employee] => SimpleXMLElement Object ( [ID_ECERT] => 4507………… [ECERTID] => 4507………… [NAME] => 吴…… [SEX] => 男性 [IDCARD] => 4528………… [BIRTHDAY] => 1966-03-10T00:00:00+08:00 [ECERTAREA] => 道路………… [FIRSTDATE] => 2011-05-23T00:00:00+08:00 [GRANTORGAN] => 钦州市………… ) ))
版主,能给个示例吗?
用正则截取
$s = preg_replace('/.+(就可得到我示例的结果GetBasicInfoResult->any);$xml = simplexml_load_string($s);print_r($xml);
我原以为可以直接拿到数据,原来还是要对字符串进行操作,算了,结帖吧