【发布时间】:2016-02-10 15:02:07
【问题描述】:
我正在尝试使用 simplexml_load_string() 解析一个肥皂响应。我的肥皂客户端设置为 trace = 1 和 exceptions = 0 并且 $client->__getLastResponse() 给了我这个结果:
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<MDHeader>
<userid>inspector@prime.com</userid>
<password>prime123456</password>
<batchid>1234</batchid></MDHeader>
<RECORDSET>
<ROW id='0'>
<INSPECTIONS>
<FOLDER_ID>835410936</FOLDER_ID>
<FOLDER_ID>835221706</FOLDER_ID>
<FOLDER_ID>835222299</FOLDER_ID>
</INSPECTIONS>
</ROW>
</RECORDSET>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
然后我将结果读入 $xml:
$xml = "<?xml version='1.0' encoding='UTF-8'?>";
$xml .= urldecode($client->__getLastResponse());
最后尝试回显一个没有运气的元素:
$xml1 = simplexml_load_string($xml,null,null,'http://schemas.xmlsoap.org/soap/envelope/',true);
echo "ELEMENT:" . $xml1->Envelope->Body->MDHeader->userid;
我相信是命名空间 SOAP-ENV 给了我这个问题,但我不知道如何解决它。
你可以在http://www.primevaluationservices.com/myriad/test.php看到我的测试页面
【问题讨论】:
-
如果你使用 PHP 来调用
$response = $client->doFunction($params);之类的东西,$response 不是已经是解析了 XML 的对象了吗?
标签: php xml web-services soap xml-parsing