0

これらの XML を反復する正しい方法はどれですか?

やあ。

いくつかのクライアントを統合するための Web サービスがあります。

webservice が 1 つのクライアントのみを返す場合、結果は次のようになります。

 <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>

そして、webService から結果を読み取るための PHP コードがあります。 $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.
 }

私の問題は、Web サービスが 1 つのクライアントのみを返す場合、コードが機能しないことです。複数のクライアントがある場合、 foreach$clients->Clientは配列になるため、必要に応じて正常に動作します。しかし、webService が 1 つのクライアントのみ$clients->Clientを返すと、ノード自体になり、私のコードはエラーをスローします。

解決するにはどうすればよいですか?

私は PHP 開発には慣れていませんが、.NET 開発には慣れていません。どんな助けも貴重です。

4

1 に答える 1

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
}
于 2013-09-05T19:32:52.240 に答える