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

Langage Perl Discussion :

[langage] Sélectionner une valeur dans une balise


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut [langage] Sélectionner une valeur dans une balise
    salut,

    J'ai un script perl qui me permet de me deplacer dans mon fichier xml
    et de m'afficher toute les balises qui corresponde au path que je lui est indiqué

    voici mon script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl -w
     
    use XML::XPath;
    use XML::XPath::XMLParser;
     
    my $xp = XML::XPath->new(filename => 'client.xml');
     
    my $cli = $xp->find('/root/client/nom/information'); 
    foreach my $clip ($cli->get_nodelist) {
        print "FOUND\n\n", 
            XML::XPath::XMLParser::as_string($clip),
            "\n\n";
    }
    voila mon fichier XML
    <?xml version="1.0" encoding="windows-1250"?>
    <root>
    <entreprise>some text</entreprise>
    <info></info>
    <client>
    <nom name="paul">
    <information valeur="Niveau" type="Bon"/>
    <information valeur="Solvable" type="Mauvais"/>
    </nom>
    </client>
    <client>
    <nom name="albine">
    <information valeur="Solvable" type="Bon"/>
    </nom>
    </client>
    <client>
    <nom name="Terence">
    <information valeur="Niveau" type="Tres bon"/>
    <information valeur="Solvable" type="Bon"/>
    <information valeur="Ancien" type="Oui"/>
    </nom>
    </client>
    </root>
    et voila le resultat

    Resultat

    <information valeur="Niveau" type="Bon" />

    Resultat

    <information valeur="Solvable" type="Mauvais" />

    Resultat

    <information valeur="Solvable" type="Bon" />

    Resultat

    <information valeur="Niveau" type="Tres bon" />

    Resultat

    <information valeur="Solvable" type="Bon" />

    Resultat

    <information valeur="Ancien" type="Oui" />
    il me retrouve bien les balises information mais ce que je souhaiterais et je ne sais pas si c'est possible , c'est de n'afficher seulement les balises information qui ont la valeur "Niveau" , en faite je voudrais cela à l'afffichage
    Resultat

    <information valeur="Niveau" type="Bon" />


    Resultat

    <information valeur="Niveau" type="Tres bon" />

    Est ce que quelqu'un aurai une piste car je ne vois ou est ce impossible ?

    Merci à tous

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Et bien, pourquoi ne pas passer par une petit regex ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $result =  XML::XPath::XMLParser::as_string($clip);
    print $result if ($result =~ m/valeur="Niveau"/);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 39
    Points : 41
    Points
    41
    Par défaut
    En utilisant Xpath jusqu'au bout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    use XML::XPath;
    use XML::XPath::XMLParser;
     
    my $xp = XML::XPath->new(filename => 'clients.xml');
     
    my $cli = $xp->find("/root/client/nom/information[\@valeur='Niveau']");
    foreach my $clip ($cli->get_nodelist) {
        print XML::XPath::XMLParser::as_string($clip),"\n";

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  2. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 15h23
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 18h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 16h19

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