Parseur XML (fichier récupéré à partir d'un web service) - PHP - Programmation
Marsh Posté le 01-06-2010 à 17:46:07
SimpleXML EST un parseur XML.
Pas besoin de sauver la réponse sur le disque pour l'interpréter.
T'as juste à utiliser ton objet SimpleXML.
Du genre $simplexml->maBalise['monAttribut']. Ni plus ni moins. Faut juste caster dans le type de base voulu, car ça renvoi toujours un objet SimpleXMLElement.
Si tu veut le contenu d'un SimpleXMLElement en chaine : $maChaine = $simplexml->saveXML();
Marsh Posté le 01-06-2010 à 19:50:18
tu mets la balise [ code] pas la balise spoiler merci
Marsh Posté le 02-06-2010 à 13:24:20
Merci de ces précisions, mais en faite j'ai trouvé une autre solution ce matin.*
j'utilise un getLastReponse qui me renvoi bien un fichier xml ce coup ci.
Code :
|
La mon fichier xml contient bien le code souhaité.
Maintenant dans ce code, je dois récupérer la valeur de certaines balises, pas toute.
Dois-je utiliser la méthode DOM ? j'ai consulté quelques tutos a ce sujet. Si oui pouvez-vous me donnez un exemple s'il vous plait? car je n'y arrive pas avec ceux des tutos.
Par exemple dans le code ci-dessous je veux juste récupérer les valeurs en rouges.
Code :
|
Si vous pouvez m'expliquer la méthode a suivre, merci d'avance.
Marsh Posté le 02-06-2010 à 13:49:04
Deux possibilité, soit c'est du SOAP "classique", et donc tu fait :
Code :
|
C'est directement mappé en "Object". Alors c'est chiant pour les attributs par contre, mais tu peut faire que le SoapClient désérialize dans un type PHP perso qui ferait ça mieux.
Si ton getOffre renvoi du XML, là c'est de ce style :
Code :
|
Et SimpleXMLElement permet de faire des foreach pour iterer sur les balises de même nom/même niveau. (exemple: foreach ($simplexml->offres->offre as $offre) {}).
Marsh Posté le 02-06-2010 à 14:33:18
Je peux utiliser le SimpleXMLElement et le DOM dans le même scripts?
Parce que encore le DOM j'arrive un peu à comprendre mais pour le simpleXML j'ai du mal.
Code :
|
$rep étant la réponse xml.
Le echo ne me montre rien.
De plus je ne peux pas récupérer les attributs avec cette méthode.
EDIT :
Code :
|
Voila je récupère toute mes id.
Maintenant il faut que je les stocks dans une variable pour les réutilisés pour une autre requête soap getModule qui m'affichera donc le contenu de mes uv (qui correspondent au id).
En gros je veux que mon résultat final soit un tableau, avec mes nom de thématique, avec pour chaque thématique ses différentes uv. Un fois cela fait en clickant sur l'uv j'aurais la fiche complète de celle-ci.
Merci encore de ta réponse Mei.
Si j'ai encore des problèmes avec le Dom je re-posterais sur ce même sujet.
Marsh Posté le 02-06-2010 à 14:42:22
Si les attributs sont utilisables comme des tableaux. Genre $a['href'] pour <a href="" />...
SimpleXML est une sur-couche de DOMDocument. Après c'est comme tu le sens, mais SimpleXMLElement reste plus concis et plus lisible.
(du echo de XML, bien sur, faut ouvrir la source pour le voir, sinon le navigateur tant à vouloir l'interpréter.)
Marsh Posté le 02-06-2010 à 16:24:13
Voila j'ai un peu avancé, mais je suis bloqué.
Code :
|
Avec ce code j'affiche mes thématiques avec leur uv (les id).
Sauf que j'ai le résultat suivant
Code :
|
Et la partie qui m'intéresse est celle entre les balises rouge, de plus j'aimerais bien la "ranger" de façon à ce qu'elle soit plus claire. Faut-il une DTD ou quelques choses dans le genre?
J'aimerais que ca ressemble plus a ca :
- Thématique Name :-> le nom de la thématique
- Element id : 1992
- Element id : 1993
- Element id : 1994
- Element id : 1995
Thématique Name :-> le nom de la thématique
- Element id : 1996
- Element id : 1997
Marsh Posté le 01-06-2010 à 15:44:44
Pour commencer bonjour à ceux qui auront le courage de chercher une solution a mon problème.
Je me présente, je suis en BTS 1er année en info, et actuellement en stage.
Mon problème vient que je suis censé parser un document xml que j'ai au préalablement récupéré via un web service. J'ai réussi la première étape (du moins je crois) mais quand je veux parser mon fichier, il me dit que mon fichier est vide.
Tout d'abord voici le code de ma requête au webservice.
et une partie du résultat quand je l'affiche "brut" (sans parseur)
Mon maître de stage (qui n'a jamais utilisé de parseur) ma gentiment donné la tâche d'en utiliser un pour un résultat plus lisible.
Voice un parseur basique qui est juste censé afficher le contenu des balises;
Or celui-ci ne retourne rien. Et avec des parseurs un peu plus "évolué". J'ai un message d'érreur comme quoi la chaîne que je rentre dans le parseur est vide.
Autre version pour récupérer le xml :
Donc mon erreur vient bien de la récupération du xml mais je ne vois pas d'ou.
Si quelqu'un peut m'expliquer à quel niveau je m'y prend mal je lui en serait reconnaissant.
Merci d'avance.
Message édité par Azax le 02-06-2010 à 12:55:04