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

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Récupérer l'attribut d'un élément xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut [SimpleXML] Récupérer l'attribut d'un élément xml
    Bonjour,

    Je parse un flux xml dans lequel je récupère les éléments ainsi que les attributs des éléments afin de les insérer dans une base de données mysql.

    Le flux étant conséquent (10 000 produits environs), au fur et a mesure que je parse mon flux je mets les valeurs dans un array pour pouvoir envoyer a la fin du script tout l'array dans ma BDD.

    Voici mon flux, mon script et le resultat (qui me pose problème), raccourci au maximum pour ne garder que le problème.

    Le flux
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8"?>
    <catalogue>
    <product id="3712570687" number="3009703025074645"></product>
    <product id="3712570689" number="3009703027074015"></product>
    </catalogue>

    Le script:
    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
    36
     
    <?php					
     
    $nouveau_art = array();  // creation d'un tableau
     
    $catalogue = simplexml_load_file('http://www.mon-flux.xml'); // Je converti mon fichier xml en objet. 
     
    $i=0; //S'incrémente de 1 à chaque produit du flux.
     
    foreach($catalogue->product as $product) // Je parse le flux.
     
    {
    	foreach($catalogue->product[$i]->attributes() as $a => $b)
    	  {
    		  ${$a} = $b;  // la variable $id contient l'id et $number le number_produit
    	  }
     
    	$i=$i+1; // Je passe au produit suivant.	
     
    	echo $id . '<br />';  // Un echo pour voir ce que contient $id
     
    	echo $number . '<br />';  // Un echo pour voir ce que contient $number	
     
    	$nouveau_art []= array ('id_produit' => $id, 'number_produit' => $number);  // Je mets les valeurs dans un tableau.
     
    }  //  Fin du foreach parsage du flux.
     
    // J'affiche le tableau pour voir ce qu'il contient.
     
    echo '<pre>';
     
    print_r($nouveau_art);
     
    echo '</pre>';
     
    ?>
    Affichage généré par le script:

    3712570687
    3009703025074645
    3712570689
    3009703027074015

    Array
    (
    [0] => Array
    (
    [id_produit] => SimpleXMLElement Object
    (
    [0] => 3712570687
    )

    [number_produit] => SimpleXMLElement Object
    (
    [0] => 3009703025074645
    )

    )

    [1] => Array
    (
    [id_produit] => SimpleXMLElement Object
    (
    [0] => 3712570689
    )

    [number_produit] => SimpleXMLElement Object
    (
    [0] => 3009703027074015
    )

    )

    )
    Donc voila mon probléme.
    Dans ce script je fais echo pour voir ce que contiennent mes variables et il m'affiche bien l'id et le number, donc OK

    Ensuite je met tous cela dans un tableau et quand je regarde ce qu'il y a dans la tableau j'ai

    SimpleXMLElement Object
    (
    [0] => 3712570687
    )

    alors que je ne veux que 3712570687.

    Comment puis-je faire ?

    J'ai essayé 2, 3 trucs sans succès et qui font usine a gaz..

    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Ne manque-t-il pas une cast justement là :


    Sinon, oui, vous récupérez un objet SimpleXMLElement au lieu d'une simple chaîne.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut
    Nickel

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2011, 15h37
  2. Réponses: 3
    Dernier message: 14/05/2008, 17h07
  3. [DOM] Récupérer les attributs d'un fichier XML en PHP
    Par ePsymon dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/02/2008, 11h51
  4. [SimpleXML] récupérer une vidéo dans un flux xml
    Par rezareza dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 17/11/2007, 16h52
  5. [XSLT] Récupérer un attribut sur un élément pointé par un IDREF
    Par Folken Laëneck dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/05/2007, 07h31

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