Page 1 sur 1

Récupération XML à plusieurs niveau

Posté : 16 nov. 2010, 16:13
par shadman
Bonjour,

Alors voilà,
je suis newbie en php5 et je voudrais récupérer toutes les variables de ce flux XML par la fonction simplexml_load_file dans des valeurs pouvant être exploitée par la suite :

Le flux récupéré par simplexml_load_file est le suivant :

Code : Tout sélectionner

SimpleXMLElement Object ( [gamme] => SimpleXMLElement Object ( [@attributes] => Array ( [reference] => gamme1 ) [tarifs] => Array ( [0] => 13.3 [1] => 11.3 [2] => 16.38 [3] => 14.00 ) ) )
et je voudrais récupérer un truc du style
$gamme1T0 = $gamme1->$tarif[0]
$gamme1T1 = $gamme1->$tarif[1]
$gamme1T2 = $gamme1->$tarif[2]

pour récupérer le premier niveau j'avais pensé à

Code : Tout sélectionner

$feed = mon flux xml $xml = simplexml_load_file($feed); $gamme = $xml->gamme[0]->attributes();
des avis ?
merci

Re: Récupération XML à plusieurs niveau

Posté : 17 nov. 2010, 18:36
par ikkiphenix
Je dirais
echo $xml->attributes()->reference;
ou
echo $xml['reference'];

Re: Récupération XML à plusieurs niveau

Posté : 17 nov. 2010, 18:48
par stealth35
c'est
$gamme = $xml->gamme['reference'];

Re: Récupération XML à plusieurs niveau

Posté : 18 nov. 2010, 21:53
par shadman

Code : Tout sélectionner

$gamme = $xml->gamme['reference'];
Ca marche ... mais c'est le premier niveau ...

Je ne comprends pas comment récupérer le second niveau dans une variable .. soit le TARIF[0] de la gamme REFERENCE pour le premier sous niveau...

Merci encore

Re: Récupération XML à plusieurs niveau

Posté : 18 nov. 2010, 21:56
par stealth35

Code : Tout sélectionner

$gamme = $xml->gamme['reference'];
Ca marche ... mais c'est le premier niveau ...

Je ne comprends pas comment récupérer le second niveau dans une variable .. soit le TARIF[0] de la gamme REFERENCE pour le premier sous niveau...

Merci encore
la faut passer du coté de xpath
$xml->xpath('//gamme[@reference='gamme1']/tarifs');

Re: Récupération XML à plusieurs niveau

Posté : 18 nov. 2010, 22:38
par ikkiphenix
Shadman,

Juste pour ma curiosité information personnelle, tu pourrais me donner le fichier XML de départ qui te donne ceci :

Code : Tout sélectionner

SimpleXMLElement Object ( [gamme] => SimpleXMLElement Object ( [@attributes] => Array ( [reference] => gamme1 ) [tarifs] => Array ( [0] => 13.3 [1] => 11.3 [2] => 16.38 [3] => 14.00 ) ) )
C'est qu'il y avait dans ton premier post. Merci !

Re: Récupération XML à plusieurs niveau

Posté : 20 nov. 2010, 10:31
par shadman
Voilà mon XML de départ

Code : Tout sélectionner

[color=#FF0000]<tarification compagnie="xxx">[/color] <gamme reference="gamme1"> <tarif formule="tarif_1">3.3</tarif> <tarif formule="tarif_2">1.3</tarif> <tarif formule="tarif_3">6.38</tarif> <tarif formule="tarif_4">4.91</tarif> </gamme> <gamme reference="gamme2"> <tarif formule="tarif_1">0.3</tarif> <tarif formule="tarif_2">5.3</tarif> <tarif formule="tarif_3">7.38</tarif> <tarif formule="tarif_4">6.91</tarif> </gamme> [color=#FF0000]</tarification>[/color]

Re: Récupération XML à plusieurs niveau

Posté : 20 nov. 2010, 10:32
par shadman
Voilà mon XML de départ

Code : Tout sélectionner

<tarification compagnie="xxx"> <gamme reference="gamme1"> <tarif formule="tarif_1">3.3</tarif> <tarif formule="tarif_2">1.3</tarif> <tarif formule="tarif_3">6.38</tarif> <tarif formule="tarif_4">4.91</tarif> </gamme> <gamme reference="gamme2"> <tarif formule="tarif_1">0.3</tarif> <tarif formule="tarif_2">5.3</tarif> <tarif formule="tarif_3">7.38</tarif> <tarif formule="tarif_4">6.91</tarif> </gamme> </tarification>