我正在使用wsdl文件,并从整个过程中学到很多东西。
我正在实例化SoapClient:
$webservice = new SoapClient("mainwsdl.wsdl");
var_dump($webservice->AccountsGetXML());
下面是回复,我对解析数据还有点新意。
object(stdClass)#2 (3) {
["AccountsGetXMLResult"]=>
object(stdClass)#3 (1) {
["any"]=>
string(391) "<AccountsWSDS xmlns=""><ERRORS><ERROR_ID>1</ERROR_ID><TABLE_NAME>Accounts</TABLE_NAME><TABLE_ID>NoID</TABLE_ID><ROW_ID>-1</ROW_ID><COLUMN_ID>EXCEPTION</COLUMN_ID><ERROR_TYPE>E</ERROR_TYPE><ERROR_CODE>0</ERROR_CODE><ERROR_TEXT>Error connecting to database - please contact ABC Customer Services. Msg: Object reference not set to an instance of an object.</ERROR_TEXT></ERRORS></AccountsWSDS>"
}
["rowCount"]=>
NULL
["pageCount"]=>
NULL
}
之前我没有使用过对象(stdClass)的响应。或者,如果我有,我已经忘记了它。
我想我需要解析[“AccountsGetXMLResult”]以获取特定信息,还需要解析[“rowCount”]和[“pageCount”]。
我很困惑#2(3)的全部内容。
无论如何,这是我尝试解析数据。我从AccountsGetXMLResult开始:
echo $webservice->AccountsGetXMLResult;
这是我得到的 PHP注意:未定义的属性:第23行的/apache/test.php中的SoapClient :: $ AccountsGetXMLResult
很明显,我需要帮助解剖回复。
答案 0 :(得分:1)
$webservice->AccountsGetXML()
返回类型为stdClass
的对象,其中包含您在var转储中看到的属性。 stdClass
只是一个“空占位符类”,没有任何预定义的属性或方法。要访问您看到的属性,请使用$webservice->AccountsGetXML()
的返回值:
$obj = $webservice->AccountsGetXML();
var_dump($obj->AccountsGetXMLResult);
var_dump($obj->AccountsGetXMLResult->any);
这也是这样的:
echo $webservice->AccountsGetXML()->AccountsGetXMLResult->any;
答案 1 :(得分:0)
试试这个:
$result = json_decode(json_encode(simplexml_load_string($webservice->AccountsGetXML()->AccountsGetXMLResult->any)),TRUE);
print_r($result);