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 :

[DOM] Parsage XML en PHP 4


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut [DOM] Parsage XML en PHP 4
    Bonjour,

    Je dois me lancer dans le parsage XML avec PHP 4. Pour le moment j'ai tenté de me documenter sur les fonctions PHP relatives à ce type de traitement, j'ai trouvé un code.
    Il interprète bien, il met des jolies couleur mais moi j'aimerais pouvoir mettre en correspondance l'élément avec sa valeur.

    A partir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <EMAIL>jeanclaude@labas.fr</EMAIL>
    J'aimerais pouvoir obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $email = 'jeanclaude@labas.fr'
    Je suis bien sûr tombée sur le post de novembre 2005 parlant de simpleXML, et j'ai bien été dégoutée de voir que ça nécessitait php 5

    Quelqu'un pour m'aider... me dire si le lien mentionné est un bonne technique si y'a moyen de la faire évoluer... si faut passer par les regex... siouplé ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ce n'est pas la bonne technique. ton lien c'est pour faire l'inverse : produire un arbre xml et non l'inverse...

  3. #3
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Autant pour moi je m'étais trompée de lien... et avec celui là (là haut) ?

  4. #4
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    En fait l'exemple met en correspondance un élément avec sa valeur uniquement si c'est cette syntaxe qui est utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <EMAIL valeur="jeanclaude@labas.fr" />
    et non celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <EMAIL>jeanclaude@labas.fr</EMAIL>
    Comment faire pour que ça passe avec la 2ème ?

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Codé à La RACHE, pour la démonstration :

    Soit le doc xml suivant :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <toto>
    	<email>huntress@example.com</email>
    	<email>ssertnuh@example.com</email>
    </toto>
    Soit le code php suivant :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <pre><?php
    $file="mon_doc.xml";
     
     
    $we_are_in_email = false;
    $current_email = '';
     
    function startElement($parser, $name, $attribs) {
        global $we_are_in_email;
        if ('email' == strtolower($name)) {
            $we_are_in_email = true;
        }
    }
     
    function endElement($parser, $name) {
        global $we_are_in_email, $current_email;
        if ($we_are_in_email) {
            echo "l'email est $current_email<br/>";
            $we_are_in_email = false;
        }
    }
     
    function characterData($parser, $data) {
        global $we_are_in_email, $current_email;
        if ($we_are_in_email) {
            $current_email = $data;
        }
    }
     
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
     
    if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
    }
     
    while ($data = fread($fp, 4096)) {
         if (!xml_parse($xml_parser, $data, feof($fp))) {
             die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
        }
    }
     
    xml_parser_free($xml_parser);
     
    ?>
    Nous obtenons :
    l'email est huntress@example.com
    l'email est ssertnuh@example.com
    CQFD

  6. #6
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Huuuuummm je commence un peu à piger le truc (l'était temps).
    Merci pour ce code je creuse là dessus, je mets pas tout de suite résolu, j'attends d'y voir complètement clair.

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    N'hesite pas si tu as des questions

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ca c est du parsing sax apres tu peux aussi faire du dom ou la tu manipule un arbre en mémoire.

    Sax est utilisé surtout sur des gros fichiers et dom sur les plus petits a cause de l'occupation mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DOM Parsage XML et fonction récursive
    Par DonKnacki dans le forum Général Python
    Réponses: 7
    Dernier message: 05/06/2014, 19h25
  2. [DOM] parseur xml php
    Par agent63 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/10/2006, 16h40
  3. [DOM] récupération de XML par PHP
    Par shingara dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 13/02/2006, 20h56
  4. [DOM] Validation xml avec PHP
    Par thefaycal dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 26/01/2006, 21h15
  5. [DOM XML][XSLT] Création d'un document XML avec PHP
    Par ToxiZz dans le forum Bibliothèques et frameworks
    Réponses: 21
    Dernier message: 16/01/2006, 17h44

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