Php et simpleXML

Résolu
adroussel -  
 adroussel -
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>
Configuration: Windows XP
Firefox 3.5.3

5 réponses

  1. imw Messages postés 233 Statut Membre 42
     
    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
  2. imw Messages postés 233 Statut Membre 42
     
    fait juste un $values[ 'bgcolor1' ]
    1
  3. adroussel
     
    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
  4. imw Messages postés 233 Statut Membre 42
     
    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
    1. adroussel
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question