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

Langage PHP Discussion :

Attributs dans fichier XML


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Attributs dans fichier XML
    Bonjour,

    Je debute sur PHP et j'ai un petit probleme lors de l'extraction de mon fichier XML.
    Une de mes balises contient deux attributs que je dois recuperer et je ne vois pas comment. J'ai cherche sur la doc php et certains forum mais sans succes...
    peut etre que j'ai rate quelque chose...

    Voici la partie de mon xml avec mes attributs:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <rooms>
    <price date="2012-12-23" rate_id="1262480">70</price>
    </rooms>

    Je dois recuperer la date et le numero "rate_id" indique ainsi que son prix.
    Cette balise fais parti d'un xml plus consequent mais je bute juste a cet endroit.

    Pour recuperer le prix pas de souci je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tmprooms['ROOM_PRICE'] = $rooms['price'];
    Avez-vous une solution pour que je puisse recuperer mes 2 attributs manquants ?

    Merci d'avance.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quelle méthode utilises-tu pour lire ton xml ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Je lis mon fichier en utilisant SimpleXML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    final function arrayXML(&$xml){
    		$xml = simplexml_load_string($xml);
    		$xml = json_encode($xml);
    		$xml = json_decode($xml,TRUE);
    		$this->readAttributes($xml);
    	}

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour accéder aux attributs d'une balise Xml via simpleXml, tu as une méthode SimpleXMLElement:: attributes. Donc a priori via $att = $rooms['price']->attributes();.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Merci de ton aide.

    En fait j'ai deja essaye cette methode. et lorsque j'execute cela me renvoie une erreur :

    "Call to a member function attributes() on a non-object..." (avec le chemin vers ma classe)

    Alors voila ce que j'ai fais (peut etre que mes 2 solutions sont fausses) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tmprooms['ROOM_PRICE_DATE'] = $rooms['price']->attributes()
    Ensuite je me suis dit qu'il fallait peut etre preciser le nom de mon attribut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tmprooms['ROOM_PRICE_DATE'] = $rooms['price']->attributes('date');
    J'ai essaye aussi d'autre possibilite que j'ai trouve sur des forums mais j'ai toujours le meme probleme...

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    hum... comment affectes-tu $rooms exactement ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Mon $rooms est affecte de la maniere suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $this->arrayXML($xml);
     
    foreach ($xml['reservation']['room'] as $rooms){
     
    $tmprooms['ROOM_PRICE_DATE'] = $rooms['price']
     
    // Et le reste des mes instructions
     
    }
    le $xml est le xml que j'ai recuperer grace a la fonction que j'ai poste plus haut ^^

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($xml['reservation']['room'] as $rooms){...}
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <rooms>
    <price date="2012-12-23" rate_id="1262480">70</price>
    </rooms>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Oups... Oui effectivement j'ai fais une faute de frappe en tapant mon xml... Desole !

    ma balise "room" est bien au singulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <room>
       <price date="2012-12-23" rate_id="1262480">70</price>
        ...
    </room>
    Mon code est bon a ce niveau car je recupere bien tous les champs. (j'obtiens bien 70 lorsque j'accede a ma zone "price")
    C'est juste les deux attributs qui se trouvent dans cette balise qui me donnent du fil a retordre

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par choupi12
    le $xml est le xml que j'ai recuperer grace a la fonction que j'ai poste plus haut ^^
    Plus haut où au juste ???
    Parce que je ne vois nulle part d'où il sort et surtout, de quelle classe tu te sers...
    ça fait quoi au juste ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je suppose qu'il s'agit de cette fonction (citée plus haut dans le discussion)
    Citation Envoyé par choupi12 Voir le message
    Je lis mon fichier en utilisant SimpleXML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    final function arrayXML(&$xml){
    		$xml = simplexml_load_string($xml);
    		$xml = json_encode($xml);
    		$xml = json_decode($xml,TRUE);
    		$this->readAttributes($xml);
    	}
    Par contre, moi c'est readAttributes() qui m'intéresse
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Appel cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    final function arrayXML(&$xml){
    		$xml = simplexml_load_string($xml);
    		$xml = json_encode($xml);
    		$xml = json_decode($xml,TRUE);
    		$this->readAttributes($xml);
    }
    Cette fonction ouvre un xml que j'ai recupere dans une autre classe.
    Je n'ai mis que la partie bloquante de mon xml car je ne peut pas le poster en entier ce serais un peu trop lourd a lire... Je recupere bien les donnees de mon xml et je ne suis pas bloquer sur la lecture de la totalite des valeurs que contient mon xml.

    Ce que j'aimerais savoir c'est comment puis-je recuperer les deux attributs (date et rate_id) que contient ma balise "price" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <price date="2012-12-23" rate_id="1262480">70</price>
    Comme le disais Celira, il y a cette fonction attributes() que j'avais deja vu sur la doc php. Le probleme est que je n'arrive pas a la faire fonctionner. Cela me retourne ce code erreur :

    Call to a member function attributes() on a non-object
    Donc a priori je dois mal l'utiliser. Mais je ne vois pas ou se situe mon erreur...

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Par contre, moi c'est readAttributes() qui m'intéresse
    Oui je l'ai essaye aussi. Mais toujours pareil je n'arrive pas a m'en servir.
    Je pense que ma syntaxe ne dois pas etre correcte...

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon reprenons. Ce qu'il faudrait faire : lire le xml, lire la balise qui t'intéresse et récupérer les attributs.
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $xml = simplexml_load_string($fichierXml);
     
    $rooms = $xml->reservation->room;
     
    foreach ($rooms as $room) {
    	$price = $room->price;
    	$attPrice = $price->attributes();
    	echo 'price :'.$price.'<br/>';
    	echo 'date : '.$attPrice->date.'<br/>';
    	echo 'rate_id : '.$attPrice->rate_id.'<br/>';
    }
    A mon avis, ce sont les appels à json_encode et json_decode qui mettent le bazar. A quoi sont-ils censés servir ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Je n'ai pas code cette partie mais si j'ai bien compris ca sert a mettre en forme le fichier xml de maniere a le recevoir sous cette forme :

    XML :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <room>
    <name>Standard Double Room</name>
    <price date="2012-12-23" rate_id="1262480">70</price>
    <totalprice>105</totalprice>
    </room>


    Apres le json_encode() et le json_decode()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array 
    (
    [name] => Standard Double Room
    [price] => 70
    [totalprice] => 105
    )
    Donc en fait j'arrive directement avec cette mise en forme lorsque je dois recuperer mes elements

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    A mon avis, ce sont les appels à json_encode et json_decode qui mettent le bazar
    Tu as raison !! c'est deux fonctions ne me permettent pas d'acceder a mes attributs...
    Je viens de tester en les commentants et je recupere bien ma date et mon rate_id...

    Je vais continuer mes recherches pour savoir s'il est possible de faire autrement en gardant ses deux fonctions mais merci bien de ton aide ca m'a fais avancer

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/10/2005, 09h59
  2. Balise html dans fichier XML
    Par pierrox dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 19/09/2005, 09h20
  3. [XML] Incorporation de balises HTML dans fichier XML
    Par wazzzzza dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 26/07/2005, 14h17
  4. [JDOM] Ajout élément dans fichier XML
    Par delinot dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 18/07/2005, 11h10
  5. Pb de balises dans fichier XML
    Par allstar dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 13h59

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