现在有个项目需要调用到一个.net的webservice
返回的结果是一个datatable类型
但是datatable类型里面很多xml信息很不好分辨
请问有没有什么方法可以比较好的取到我所需要的数据?代码如下:
<?php
header("Content-type: text/html; charset=utf-8"); require_once('lib/nusoap.php');
require_once('soapconfigure.php');
// 创建一个soapclient对象,参数是server的WSDL
$client = new soapclient(SOAP_ADDRESS_CONFIGURE,true); $client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false; if ($err=$client->getError()){
echo $err;
exit;
}
$param1="0=0"; $param2="1"; $param3="www.website.com";
$aryPara = array(
'Conditions'=>$param1,
'UserId'=>$param2,
'strUrl'=>$param3
);
$aryResult = $client->call("GetAdminData",$aryPara); if (!$err=$client->getError()) { print_r($aryResult."<br/>"); } print_r(unserialize($client->document)."<br/>");
?>
返回的datatable结果为
<?php
/*
php body
*/
Array (
[GetAdminDataResult] => Array (
[schema] => Array (
[element] => Array (
[complexType] => Array (
[choice] => Array (
[element] => Array (
[complexType] => Array (
[sequence] => Array (
[element] => Array (
[0] => Array ([!name] => AdminID [!minOccurs] => 0 )
[1] => Array ( [!name] => AdminName [!minOccurs] => 0 )
[2] => Array ( [!name] => AdminPass [!minOccurs] => 0 )
[3] => Array ( [!name] => AdminLevel [!minOccurs] => 0 )
[4] => Array ( [!name] => AdminRights [!minOccurs] => 0 )
[5] => Array ( [!name] => CustomerID [!minOccurs] => 0 )
)
)
)
[!name] => Table
)
[!minOccurs] => 0 [!maxOccurs] => unbounded
)
)
[!name] => NewDataSet [!msdata:IsDataSet] => true
[!msdata:MainDataTable] => Table [!msdata:UseCurrentLocale] => true
)
[!id] => NewDataSet
)
[diffgram] => Array (
[NewDataSet] => Array (
[Table] => Array (
[0] => Array (
[AdminID] => 2
[AdminName] => admin
[AdminPass] => 1234
[AdminLevel] => 0
[AdminRights] => 1,2,3,4,5,6,7,8,9,10
[CustomerID] => 3
[!diffgr:id] => Table1 [!msdata:rowOrder] => 0
)
[1] => Array (
[AdminID] => 10
[AdminName] => chen
[AdminPass] => 1234
[AdminLevel] => 0
[AdminRights] => 1,2,3,4,5,6,7,8,9,10
[CustomerID] => 3
[!diffgr:id] => Table2 [!msdata:rowOrder] => 1
)
)
)
)
)
)
?>
返回的结果是一个datatable类型
但是datatable类型里面很多xml信息很不好分辨
请问有没有什么方法可以比较好的取到我所需要的数据?代码如下:
<?php
header("Content-type: text/html; charset=utf-8"); require_once('lib/nusoap.php');
require_once('soapconfigure.php');
// 创建一个soapclient对象,参数是server的WSDL
$client = new soapclient(SOAP_ADDRESS_CONFIGURE,true); $client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false; if ($err=$client->getError()){
echo $err;
exit;
}
$param1="0=0"; $param2="1"; $param3="www.website.com";
$aryPara = array(
'Conditions'=>$param1,
'UserId'=>$param2,
'strUrl'=>$param3
);
$aryResult = $client->call("GetAdminData",$aryPara); if (!$err=$client->getError()) { print_r($aryResult."<br/>"); } print_r(unserialize($client->document)."<br/>");
?>
返回的datatable结果为
<?php
/*
php body
*/
Array (
[GetAdminDataResult] => Array (
[schema] => Array (
[element] => Array (
[complexType] => Array (
[choice] => Array (
[element] => Array (
[complexType] => Array (
[sequence] => Array (
[element] => Array (
[0] => Array ([!name] => AdminID [!minOccurs] => 0 )
[1] => Array ( [!name] => AdminName [!minOccurs] => 0 )
[2] => Array ( [!name] => AdminPass [!minOccurs] => 0 )
[3] => Array ( [!name] => AdminLevel [!minOccurs] => 0 )
[4] => Array ( [!name] => AdminRights [!minOccurs] => 0 )
[5] => Array ( [!name] => CustomerID [!minOccurs] => 0 )
)
)
)
[!name] => Table
)
[!minOccurs] => 0 [!maxOccurs] => unbounded
)
)
[!name] => NewDataSet [!msdata:IsDataSet] => true
[!msdata:MainDataTable] => Table [!msdata:UseCurrentLocale] => true
)
[!id] => NewDataSet
)
[diffgram] => Array (
[NewDataSet] => Array (
[Table] => Array (
[0] => Array (
[AdminID] => 2
[AdminName] => admin
[AdminPass] => 1234
[AdminLevel] => 0
[AdminRights] => 1,2,3,4,5,6,7,8,9,10
[CustomerID] => 3
[!diffgr:id] => Table1 [!msdata:rowOrder] => 0
)
[1] => Array (
[AdminID] => 10
[AdminName] => chen
[AdminPass] => 1234
[AdminLevel] => 0
[AdminRights] => 1,2,3,4,5,6,7,8,9,10
[CustomerID] => 3
[!diffgr:id] => Table2 [!msdata:rowOrder] => 1
)
)
)
)
)
)
?>
你的datatable地返回结果已经是数组了,用取数组元素的方法来访问不行吗?
遍历数组用
foreach( $array as $key => $value ){
echo $key.": ".$value;
}
比如:$array[GetAdminDataResult][schema][element]......