Azax | 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.
Code :
- try
- {
- $client = new SoapClient('https://oasis.emn.fr/opdotnet/webservices/Formation.asmx?WSDL');
- echo '<hr /><br />';
- echo '<br /><br />
- <b>Invocation de getOffre() :</b>';
- echo '<br />';
- $params = array(
- 'guid'=> '',
- 'idCommunaute'=> 2,
- 'strTypeReferentiel'=>'',
- 'strVisibilite'=>'',
- 'sIdVue'=>'423',
- 'sIdCatalogue'=>'',
- 'sIdDomaine'=>'',
- 'strListeTypeReferentielsCibles'=>'',
- 'sChampDyn'=>'',
- 'sChampFact'=>'',
- 'sDateModificationDebut'=>'',
- 'sDateModificationFin'=>'',
- 'sChampDynLiens'=>'',
- 'EtatsProcess'=>'',
- );
- try {
- $ret=$client->getOffre($params);
- $xml = simplexml_load_string($ret->getOffreResult, 'SimpleXMLElement', LIBXML_NOCDATA);
- }
- catch(Exception $e) {
- return false;
- };
-
- }
- catch(Exception $e)
- {
- echo '<br /><hr />';
- echo "<b>Exception:</b> " . $e;
- }
- $file = fopen('getOffre.xml','w'); // j'enregistre mon résultat dans un fichier 'getOffre.xml'
- fputs($file, $xml);
- fclose($file);
|
et une partie du résultat quand je l'affiche "brut" (sans parseur)
Code :
- SimpleXMLElement Object ( [vues] => SimpleXMLElement Object ( [vue] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 423 ) [nom] => Formations Doctorale [champs] => SimpleXMLElement Object ( [champ] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 757 [typedonnee] => NUM ) [code] => RES_CDE_ANA [nom] => Centre analytique [valeur] => SimpleXMLElement Object ( ) [valeurAffichee] => SimpleXMLElement Object ( ) [idvaleur] => SimpleXMLElement Object ( ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 752 [typedonnee] => TXT ) [code] => FRT_COD_PRO [nom] => Format de codification des process [valeur] => SimpleXMLElement Object ( ) [valeurAffichee] => SimpleXMLElement Object ( ) [idvaleur] => SimpleXMLElement Object ( ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 754 [typedonnee] => ORG ) [code] => ORG_FOR [nom] => Site [valeur] => SimpleXMLElement Object ( ) [valeurAffichee] => SimpleXMLElement Object ( ) [idvaleur] => SimpleXMLElement Object ( ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 762 [typedonnee] => USR ) [code] => RES_USR_CON [nom] => Interlocuteur [valeur] => SimpleXMLElement Object ( ) [valeurAffichee] => SimpleXMLElement Object ( ) [idvaleur] => SimpleXMLElement Object ( ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1154 [typedonnee] => SEL ) [code] => FPC_VUE_SESSION [nom] => Vue des données de base process [valeur] => SimpleXMLElement Object ( ) [valeurAffichee] => SimpleXMLElement Object ( ) [idvaleur] => SimpleXMLElement Object ( ) ) ) ) [catalogues] => SimpleXMLElement Object ( [catalogue] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 166 [referentiel] => FPC ) [nom] => Doctorants [domaine] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 166 [referentiel] => FPC ) [nom] => Doctorants [description] => SimpleXMLElement Object ( ) [domaine] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 167 [referentiel] => FPC ) [nom] => 1 - COMMUNICATION ET MANAGEMENT [description] => SimpleXMLElement Object ( ) [element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2288 [referentiel] => FPC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2289 [referentiel] => FPC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2290 [referentiel] => FPC ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2338 [referentiel] => FPC ) ) ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 168 [referentiel] => FPC ) [nom] => 2 - STRATEGIE ENTREPRISE ET MANAGEMENT DE PROJET [description] => SimpleXMLElement Object ( ) [element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2292 [referentiel] => FPC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2293 [referentiel] => FPC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2294 [referentiel] => FPC ) ) ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 169 [referentiel] => FPC ) [nom] => 3 - INNOVATION ET VALORISATION [description] => SimpleXMLElement Object ( ) [element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2341 [referentiel] => FPC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2342 [referentiel] => FPC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2298 [referentiel] => FPC ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2295 [referentiel] => FPC ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2296 [referentiel] => FPC ) ) [5] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2297 [referentiel] => FPC ) ) ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 170 [referentiel] => FPC ) [nom] => 5 - OUVERTURE SCIENTIFIQUE ET ENJEUX DE LA SOCIETE [description] => SimpleXMLElement Object ( ) [element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2305 [referentiel] => FPC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2302 [referentiel] => FPC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2301 [referentiel] => FPC ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2339 [referentiel] => FPC ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2340 [referentiel] => FPC ) ) [5] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2304 [referentiel] => FPC ) ) ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 171 [referentiel] => FPC ) [nom] => 6 - PROJET PROFESSIONNEL ET INSERTION [description] => SimpleXMLElement Object ( ) [element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2310 [referentiel] => FPC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2307 [referentiel] => FPC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2308 [referentiel] => FPC ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2309 [referentiel] => FPC ) ) ) ) [5] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 172 [referentiel] => FPC ) [nom] => 4 -
|
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;
Code :
- $fichier = "getOffre.xml";
- // Ma propre fonction de traitement du texte
- // qui est appelée par le "parseur"
- function fonctionTexte($parseur, $texte)
- {
- // Dans l'immédiat nous nous contentons d'afficher
- // le texte brut accompagné d'un simple retour à la ligne
- echo $texte."<br/>";
- }
- // Création du parseur XML
- $parseurXML = xml_parser_create();
- // Je précise le nom de la fonction a appeler
- // lorsque du texte est rencontré
- xml_set_character_data_handler($parseurXML, "fonctionTexte" );
- // Ouverture du fichier
- $fp = fopen($fichier, "r" );
- if (!$fp) die("Impossible d'ouvrir le fichier XML" );
- // Lecture ligne par ligne
- while ( $ligneXML = fgets($fp, 1024)) {
- // Analyse de la ligne
- // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
- // ligne du fichier.
-
- xml_parse($parseurXML, $ligneXML, feof($fp)) or
- die("Erreur XML" );
- }
-
- xml_parser_free($parseurXML);
- fclose($fp);
|
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 :
Code :
- /*$file = new DomDocument(); // Instanciation de la classe DomDocument : création d'un nouvel objet.
- $resultat_html = ''; // Initialisation de la chaîne qui contient le résultat.
- $file->loadXML($xml);
- $file->save('getOffre.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
|