Récupération XML à plusieurs niveau

shadman
Invité n'ayant pas de compte PHPfrance

16 nov. 2010, 16:13

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

Eléphant du PHP | 52 Messages

17 nov. 2010, 18:36

Je dirais
echo $xml->attributes()->reference;
ou
echo $xml['reference'];
Image Zend Certified Engineer

ViPHP
ViPHP | 5462 Messages

17 nov. 2010, 18:48

c'est
$gamme = $xml->gamme['reference'];

shadman
Invité n'ayant pas de compte PHPfrance

18 nov. 2010, 21:53

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

ViPHP
ViPHP | 5462 Messages

18 nov. 2010, 21:56

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');

Eléphant du PHP | 52 Messages

18 nov. 2010, 22:38

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 !
Image Zend Certified Engineer

shadman
Invité n'ayant pas de compte PHPfrance

20 nov. 2010, 10:31

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]

shadman
Invité n'ayant pas de compte PHPfrance

20 nov. 2010, 10:32

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>