Création
d'entreprise
Posez votre question Signaler

Php et simpleXML [Résolu]

adroussel - Dernière réponse le 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>
Lire la suite 

Php et simpleXML »

Suggestions
6 réponses
Réponse
+1
moins plus
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

Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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)
http://www.php.net/manual/fr/control-structures.foreach.php
adroussel - 22 sept. 2009 à 10:55
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
Ajouter un commentaire
Réponse
+0
moins plus
fait juste un $values[ 'bgcolor1' ]
Ajouter un commentaire
Réponse
+0
moins plus
Impec Un grand grand merci!
Ajouter un commentaire
Ce document intitulé « php et simpleXML » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?