IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Filter un document XML et affichage


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [SimpleXML] Filter un document XML et affichage
    bonjour,
    je suis nouveau sur ce site, comme en programmation d'ailleurs. Je suis en train de développer en PHP/Mapscript des cartes diverses et variées. Bref je dois extraire du XML afin de l'afficher en PHP tout en filtrant les éléments que je souhaite afficher.

    le XML ressembl à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <legend>
     
    <group name="Réseau existant"/>
     
    <class icon="/tmp/1276156733_41_0_20_13_s0_646464_ffffffff_ffffff_12_726f6e64000000000000000000000000_360.png" title=" Gares voyageurs"/>
     
    <class icon="/tmp/1276156733_40_0_20_13_s0_f03c00_ffffffff_ffffff_12_726f6e64000000000000000000000000_360.png" title=" Arrêts de tramway et de bus en site propre"/>
     
    <class icon="/tmp/1276156733_35_0_20_13_s0_f03c00_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360.png" title=" Tramway et bus en site propre"/>
     
    <class icon="/tmp/1276156733_34_0_20_13_s0_cccccc_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360s1_ffffff_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360.png" title=" Tunnel ferroviaire"/>
    maintenant comment afficher dans PHP par exemple uniquement la 1ère balise class?

    je suis perdu....

    pouvez vous m'aider svp?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $xml = <<< EOX
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <legend>
    <group name="Réseau existant"/>
    <class icon="/tmp/1276156733_41_0_20_13_s0_646464_ffffffff_ffffff_12_726f6e64000000000000000000000000_360.png" title=" Gares voyageurs"/>
    <class icon="/tmp/1276156733_40_0_20_13_s0_f03c00_ffffffff_ffffff_12_726f6e64000000000000000000000000_360.png" title=" Arrêts de tramway et de bus en site propre"/>
    <class icon="/tmp/1276156733_35_0_20_13_s0_f03c00_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360.png" title=" Tramway et bus en site propre"/>
    <class icon="/tmp/1276156733_34_0_20_13_s0_cccccc_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360s1_ffffff_ffffffff_ffffffff_1_6c69676e650000000000000000000000_360.png" title=" Tunnel ferroviaire"/>
    </legend>
    EOX;
     
    function display_class(SimpleXMLElement $sxe) {
        printf('icon : %s, title : %s ' . PHP_EOL, $sxe['icon'], $sxe['title']);
    }
     
    $sxml = simplexml_load_string($xml);
     
    # Le premier élément class (premier donc d'indice 0)
    display_class($sxml->class[0]);
     
    # Itérer sur les éléments class
    foreach ($sxml->class as $c) {
        display_class($c);
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    je réponds sur le forum
    donc après avoir utilisé le code j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 4: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE9 0x73 0x65 0x61 in /opt/www/amfphp/services/visiaurif_transport/requetes/scripts/includes/ProjetsCPER2.php on line 462
    comment faire?

    bonne journée

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    SimpleXML attend, par défaut, un document encodé en UTF-8. Visiblement, ce n'est pas votre cas, vous devez donc indiquer, comme je l'avais fait (à sa première ligne), explicitement l'encodage réel de celui-ci.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    j'ai donc fais celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $legend = utf8_encode( $map->processlegendtemplate( array() ) ) ;
     
     
     
            function display_class(SimpleXMLElement $sxe) {
                      printf('icon : %s, title : %s ' . PHP_EOL, $sxe['icon'], $sxe['title']);
                     }
     
                     $sxml = simplexml_load_string($legend);
     
                     # Le premier élément class (premier donc d'indice 0)
                     display_class($sxml->class[0]);
     
                     # Itérer sur les éléments class
                     foreach ($sxml->class as $c) {
                     display_class($c);
                     }
    maintenant il me retourne d'un bloc tout mon code XML à savoir par exemple pour la ligne 1:
    /tmp/1276176279_41_0_20_13_s0_646464_ffffffff_ffffff_12_726f6e64000000000000000000000000_360.png, title : Gares voyageurs icon :
    seul le printf fonctionne...

  6. #6
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    Bonjour :

    Essaie avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
     
    $xml_file = simplexml_load_file(TONFICHIERXML);
     
     foreach ($xml_file->class as $cls) {
       foreach($cls->attributes() as $key=>$value){ 
          echo $key,'="',$value,"\"\n";
       }           
      }   
    ...
    Vous pouvez utilisé simplexml_load_file si tu le chemain complé du vers le fichier XML si non simplexml_load_string($xml) ou $xml est la chaine contenant votre XML.

Discussions similaires

  1. [Débutant] Documentation XML (<summary>) , affichage d'une "balise" <T>
    Par b_noit dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/05/2012, 14h00
  2. [SimpleXML] Enregistrer un document XML de manière formatée
    Par Paul75 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 31/05/2008, 11h52
  3. [SimpleXML] Lecture d'un document XML
    Par shivka dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/10/2007, 20h12
  4. [SimpleXML] parser un document xml distant
    Par turican2 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/05/2007, 15h18
  5. Affichage de la structure d'un document XML:
    Par choko83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/03/2007, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo