curl返回XML无法用simplexml_load_string解析,求转数组/XML方案
求助:SimpleXML无法解析SOAP返回的XML数据
我研究这个问题已经一天,相关主题的帖子也查阅过很多,还是没找到解决办法,特此求助。
我通过以下代码调用WSDL API:
$url = "https://test.domian.com/rrpservices/checkDomainsService"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $headers = array ( "Content-Type: text/xml" ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $data = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws/"> <soapenv:Header/> <soapenv:Body> <ws:checkDomains> <!--Optional:--> <user> <!--Optional:--> <name>userxxxxx</name> <!--Optional:--> <password>xxxxxx</password> </user> <!--Optional:--> <check> <!--Zero or more repetitions:--> <name>teddy12345678.com.cn</name> <name>teddyabc.com.cn</name> <name>google.com</name> </check> </ws:checkDomains> </soapenv:Body> </soapenv:Envelope>'; curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $resp = curl_exec($curl); curl_close($curl);
我需要用下面的代码才能看到返回结果:
echo "<pre>". htmlentities($resp) . "</pre>";
输出的XML内容如下:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns1:checkDomainsResponse xmlns:ns1="http://ws/"> <response> <result code="200"> <msg>check domain return</msg> </result> <domains> <domain avail="1"> <name>teddy12345678.com.cn</name> </domain> <domain avail="1"> <name>teddyabc.com.cn</name> </domain> <domain avail="0"> <name>google.com</name> </domain> </domains> </response> </ns1:checkDomainsResponse> </soap:Body> </soap:Envelope>
虽然这看起来是标准的XML字符串,但用常规的XML处理代码却无法生效,比如:
$xmlObject = simplexml_load_string($resp); $array = json_decode(json_encode($xmlObject),TRUE); print_r ($array);
这段代码没有任何输出,simplexml_load_string无法正常工作。我希望能把返回的数据转换成XML对象或者数组,求各位提供解决方案。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

