IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

lecture d'une chaîne xml


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut lecture d'une chaîne xml
    Bonjour à tous,

    je ne réussis pas à récupérer certains éléments de ma chaîne xml, pour d'autres pourtant aucun problème. J'utilise la fonction simplexml_load_string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $retour='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <response>
    	<result code="1000"><msg>Command completed successfully</msg></result>
    	<resData><domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
    		<domain:cd>
    			<domain:name avail="0">musees-senlis.fr</domain:name>
    			<domain:reason>In use</domain:reason>
    		</domain:cd>
    	</domain:chkData></resData>
     
    	<extension>
    		<frnic:ext xmlns:frnic="http://www.afnic.fr/xml/epp/frnic-1.0">
    			<frnic:resData>
    				<frnic:chkData>
    					<frnic:domain>
    						<frnic:cd>
    							<frnic:name reserved="0" forbidden="0">musees-senlis.fr</frnic:name>
    						</frnic:cd>
    					</frnic:domain>
    				</frnic:chkData>
    			</frnic:resData>
    		</frnic:ext>
    	</extension>
    	<trID>
    		<clTRID>PJAFNIC</clTRID>
    		<svTRID>SANDBOX-kenobi-25082-142-1316003419.93145</svTRID>
    	</trID>
    </response></epp>';
     
    $retour_xml=simplexml_load_string($retour);
    $code=$retour_xml[0]->response->result['code'][0]; //ok tout va bien
    $resData=$retour_xml[0]->response->resData;
     
    print_r($resData); //SimpleXMLElement Object ( ) ;
    $resData est un Objet vide, je ne réussis donc pas à récupérer la valeur avail du domaine.

    J'ai essayé différents fonctions, dont des fonctions Zend, puisque je suis sous Zend, Zend_Config_Xml, Zend_Json::fromXml() , mais rien ne marche.

    L'un de vous aurait-il une idée? Parce que là, je ne vois rien, tous les parsers que je rencontre sont des parsers de fichier,s et non pas de chaines...

    merci d'avance pour votre aide

    schwarzy2

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Parce que tu recherches les éléments de l'espace de nom par défaut.
    Utilise SimpleXMLElement::children( ) pour récupérer les éléments d'un espace de nom donné.
    http://fr2.php.net/manual/en/simplex...t.children.php

  3. #3
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut ne marche pas
    Merci pour ta réponse, mais non, ça non plus ça ne fonctionne pas. Je ne réussis même pas en utilisant cette fonction à récupérer la valeur de mon code de result, (ce que je réussis à faire en SimpleXLElement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $xml=new SimpleXMLElement($retour);
               foreach ($xml->children() as $second_gen) {
    var_dump($second_gen);
     echo ' The xml begot a ' . $second_gen['role'];
                   foreach ($second_gen->children() as $third_gen) {
                       var_dump($third_gen);
                       echo ' whot begot a ' . $third_gen['role'];
                      /*
                       foreach ($third_gen->children() as $four_gen) {
                           var_dump($four_gen);
                           echo ' The xml a ' . $third_gen['resData'];
                       }*/
                   }
               }
    Je vois au niveau 1 que l'un des enfants est resData, mais arrivé au niveau 2, aucun enfant n'apparaît à l'intérieur de resData, j'ai essayé différentes manières, en ajoutant des paramètres, en essayant d'afficher les valeurs de éléments...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($third_gen->children('domain') as $four_gen) {
                           var_dump($four_gen);
                           echo ' The xml a ' . $third_gen['resData'];
                       }
    Rien ne fonctionne, je ne réussis pas à récupérer la valeur des éléments qui se trouvent à l'intérieur de resData.

    Je suis obligée d'utiliser une REGEX?

  4. #4
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut merci à l'AFUP
    ben l'AFUP m'a donné la solution , je la mets là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $xml=new SimpleXMLElement($retour);
    $attributs=$xml->response->resData->children("urn:ietf:params:xml:ns:domain-1.0")->chkData->cd->name->attributes();
    echo $attributs['avail'];
    bonne soirée à tous

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    ben l'AFUP m'a donné la solution , je la mets là:
    <jaloux>C'est moi qui t'ai donné la soluce, après faut lire la doc </jaloux>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie et lecture d'une chaîne de caractères dans un stream
    Par Abac_Angelique dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2013, 16h17
  2. [Débutant] Lecture dans un XML et remplacer une chaîne de caractère
    Par Aazareth dans le forum C#
    Réponses: 4
    Dernier message: 02/02/2012, 21h51
  3. Lecture d'une chaîne
    Par pfeuh dans le forum Débuter
    Réponses: 3
    Dernier message: 03/09/2009, 10h15
  4. Réponses: 3
    Dernier message: 14/04/2006, 09h57
  5. [SAX] Lire une chaîne de caractères comme un XML
    Par Le Furet dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/01/2006, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo