Page 1 sur 1

webservice afficher le résultat xml

Posté : 21 août 2013, 17:13
par foetus69
Bonjour,

J'ai construit une fonction pour gérer l'appel à un webservice et lui passer les valeurs qui vont bien seulement je connais pas la méthode pour afficher le résultat de mon appel dans ma page php. Comment faire pour afficher le xml ?

Là j'ai réussi un truc c'est d'afficher le code, la description ou le code du statut mais impossible d'appeler les entrées qui m'intéressent.

Code : Tout sélectionner

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:getSingers xmlns:ns2="beans.ws.singers.fr" xmlns:ns3="fr.singers.beans"> <ReturnListSingers> <status> <code>0</code> <description>Opération réussie</description> </status> <ns3:Singer> <nom>BENABAR</aire>...
Comment je peux récupérer BENABAR et les autres "Singer" ?

Pour récupérer la description ou le code je fais par exemple : echo $objReponse->ReturnListSingers->status->code ou description;

Par avance merci de votre précieuse aide.

Féfé

Re: webservice afficher le résultat xml

Posté : 22 août 2013, 00:44
par moogli
Salut,

Que donne un var_dump($objReponse) ? (Colle le résultat ici)

Sinon, sur le principe tu devrais avoir plusieurs singer, donc une liste de singer (en php un tableau) sur lequel tu va itérer, avec un foreach par exemple.

Pour info le XML fournit est invalide mais je suppose qu'il s'agit d'une erreur a la copie ?

@+

Re: webservice afficher le résultat xml

Posté : 22 août 2013, 16:23
par foetus69
Bonjour, avec ton astuce moogli j'ai encore pu arriver à mes fins =D>

C'est vrai que je n'ai pas le réflexe très utile d'utiliser les var_dump et autre <pre>

Du coup j'ai réussi à catcher la valeur voulue :

echo $objReponse->ReturnListSingers->any["Singer"]["$i"]->nom; //via un for $i=0.

Le dernier point c'est que je voudrais compter le nombre de noeuds "Singer" car pour le moment j'indique le chiffre exact et quand ça dépasse j'ai une erreur :
Notice: Undefined index: 4 par exemple

J'aimerai m'appuyer sur un quelque chose.length pour paramétrer ma boucle mais je ne vois pas bien comment implémenter cette fonction. Un nouveau tuyau ?

:priere:

Re: webservice afficher le résultat xml

Posté : 22 août 2013, 16:42
par foetus69
J'ai trouvé !!!

Je pensais transformer ça en objet xml mais j'avais des erreurs alors j'ai procédé ainsi :

$Max= sizeof($objReponse->ReturnListSingers->any["Singer"]);

et là ça me renvoie bien mon chiffre max, du coup je peux tester proprement ma boucle ;)

MERCIIIIIIIIIIIIIIIIIIIIIIII

Re: [RESOLU] webservice afficher le résultat xml

Posté : 22 août 2013, 19:13
par moogli
Pour parcourir un tableau (ou itérer dessus) tu peux utiliser simplement un foreach ;)


@+

Re: [RESOLU] webservice afficher le résultat xml

Posté : 23 août 2013, 11:57
par foetus69
Coucou :)

Oui c'est pas faux ! mais sur quelle donnée m'appuyer puisque j'étais dans l'incapacité de compter mes "Singer" par un getElement...

En tout cas ton aide est toujours aussi précieuse. MERCi !