这是迭代这些XML片段的正确方法吗?
你好。
我有一个网络服务,可以让我有一些客户进行整合。
如果werbservice只返回一个客户端,结果如下:
<ClientsToIntegrateResult>
<Client>
<Id>1</Id>
<Name>John</Name>
</Client>
</ClientsToIntegrateResult>
如果webService返回多个客户端,结果如下:
<ClientsToIntegrateResult>
<Client>
<Id>1</Id>
<Name>John</Name>
</Client>
<Client>
<Id>2</Id>
<Name>Peter</Name>
</Client>
</ClientsToIntegrateResult>
我有这段PHP代码来读取webService的结果,其中$ myWSResponse是我的webService的实例:
$clients = $myWSResponse->ClientsToIntegrateResult;
foreach ($clients->Client as $client )
{
print_r($client); //Print the client node and its properties if more than one client, and prints each property of client node if only one client.
print_r($client->Id); //Give me error if only one client, because Id will not exist.
}
我的问题是当webservice只返回一个客户端时,我的代码不起作用。
当我有多个客户端时,我的foreach正常工作,因为我希望,因为$clients->Client
将是一个数组。
但是当webService只返回一个客户端时,$clients->Client
将成为节点本身,我的代码将抛出错误。
我能做些什么来解决它?
我不熟悉PHP开发,但使用.NET开发。任何帮助都是宝贵的。
答案 0 :(得分:0)
if(count($clients->Client) > 1){
foreach ($clients->Client as $client )
{
print_r($client); //Print the client node and its properties if more than one client, and prints each property of client node if only one client.
print_r($client->Id); //Give me error if only one client, because Id will not exist.
}
}else {
echo $clients->Client['id']; //and other child attributes
}