SOAP调用后获取XML字段

时间:2019-04-20 05:11:15

标签: php asmx

我的asmx WEB服务返回此XML

   <?xml version="1.0" encoding="ISO-8859-1"?>
   <PRODUCT>
     <DESC>Vanilla ice cream</DESC>
     <CODEERR>0</CODEERR>
   </PRODUCT>

从此PHP代码调用WEB服务

  $SoapCli = new SoapClient('http://www.foo.com/MyService.asmx?WSDL');
        $params = array(
          'PARAM1' => 'some_param_1',
          'PARAM2' => 'some_param_2',
        );
        $resp_WS = $SoapCli->__soapCall('MyFunction', array($params));
        var_dump($resp_WS);

结果是

object(stdClass)#11946 (1) {
  ["MyFunctionResult"]=&gt;
  object(stdClass)#11947 (1) {
    ["any"]=&gt;
    string(88) "<product xmlns=""><desc>Vanilla ice cream</desc><codeerr>0</codeerr></product>"
  }
}

但是,经过大量的搜索之后,我找不到用于DESC和CODER两个字段的返回值的PHP代码

1 个答案:

答案 0 :(得分:0)

您可以使用json_encodejson_decodesimplexml_load_string来解析XML响应,请尝试以下代码片段来读取XML响应

$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
         <PRODUCT>
           <DESC>Vanilla ice cream</DESC>
           <CODEERR>0</CODEERR>
         </PRODUCT>';

 $res = json_decode(json_encode((array)simplexml_load_string($xml)),true);

现在,您可以使用$res['DESC']$res['CODEERR']来检索值。