Php et simpleXML

Résolu/Fermé
adroussel - 21 sept. 2009 à 23:46
 adroussel - 22 sept. 2009 à 11:36
Hello,

Je voudrais lire un petit fichier xml avec php, d'habitude j'utilisais la fonction simplexml, mais la , la structure du fichier xml me perturbe... comment procederiez vous pour recuperer les 'name' et 'value' des parametres.
merci pour votre aide!

voici le fichier xml simplifié:
<config>
<param name="width" value="280"/>
<param name="height" value="200"/>
<param name="bgcolor1" value="9293a9"/>
<param name="bgcolor2" value="808094"/>
</config>
A voir également:

5 réponses

imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
22 sept. 2009 à 07:44
Salut,

Si tu ne veux ou ne peux pas utiliser simpleXML, tu peux utiliser les expressions régulières.

$values = array(); // tableau associatif avec les clé=name et valeurs =value
$xml = 'le contenu du fichier xml';
if( preg_match_all('#param name="(.*?)" value="(.*?)"#', $xml, $out ) )
{
    foreach( $out[1] as $k=>$v)
        $values[ $out[1][$k] ] = $out[2][$k];
}
print_r( $values);

tu devrai avoir dans $values :
'width'=>280
'height'=>200
...


Si tu as plusieurs fois des params avec name et value dans ton XML, il te faut isoler le bloc config pour ne récupérer que ceux du config (avec split, explode ...)

Nico

1
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
22 sept. 2009 à 11:08
fait juste un $values[ 'bgcolor1' ]
1
Merci Nico!

En fait je n'ai rien contre simplexml, c'est juste qu'apres mon simplexml_load_file, je n'arrive pas a recuperer les valeurs de cete maniere $xml->config->color, d'habitude sur des fichiers xml avec des balises ca marche...

Pour ton alternative en expressions régulièeres, elle m'interesse aussi, car plus compatible (php4 etc...)
J'ai donc testé
je n'ai que 'Array()' qui s'affiche.
je ne comprends pas bien ce que je dois mettre dans l'array de la premiere ligne , dois je la laisser telle qu'elle?
j'ai bien placé le path de mon fichier xml dans $xml
je ne comprends pas bien $k=>$v car $v n'apparait nulle part ailleur

merci pour ton aide précieuse
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
22 sept. 2009 à 09:49
Le array du début, tu le laisse vide ... c'est normal on le rempli après.
pour le xml, ce n'est pas le nom du fichier, mais son contenu ...
Le plus simple : $xml = file_get_contents( $urlxml );

Pour le coup du $k=>$v c'est la syntaxe pour récupérer les clés et valeurs d'un tableau.
En effet, je n'utilise pas le $v (même si je pouvais), mais on ne peux pas récupérer la clé ($k) sans récupérer aussi la valeur ($v)
https://www.php.net/manual/fr/control-structures.foreach.php
0
super ca marche, donc maintenant, je recupere pour $values:

Array ( [width] => 280 [height] => 200 [bgcolor1] => 9293a9 [bgcolor2] => 808094 )

comment sortir au plus simple la valeur bgcolor1
J'aurai pensé à un $values[2] ... mais non

?
Un grand merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Impec Un grand grand merci!
0