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 :

Recuperer une chaine


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 4
    Par défaut Recuperer une chaine
    Bonjour,

    Je suis débutant en perl et je voudrais pouvoir récupérer la valeur correspondant à Identifiant dans le fichier:

    mon fichier =
    < Tocken Identifiant="Ma chaine/TITI" Id="deid1" />
    < Tocken Identifiant="Ma chaine/TOTI" Id="deid2" />
    < Tocken Identifiant="Ma chaine/TATI" Id="deid3" />
    < Tocken Identifiant="Ma chaine/TUTI" Id="deid4" />

    Comment faire pour recupérer la chaine correspondant à Identifiant sans utiliser un Parser XML et en utilisant les expressions régulières?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Si ta syntaxe est régulière et que tu n'as de niveaux imbriqués qui t'ennuient, tu peux t'en sortir avec une regex toute simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (<>) {
        print $1, "\n" if /^< Tocken Identifiant="(.*?)"/; 
    }
    Tu peux raffiner en cas de besoin.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 4
    Par défaut
    Bonjour IBLIS,

    Ca ne marche pas: voici le code:

    @file = <MonFichierXML>;
    foreach $element (@file)
    {
    if ($element =~ /^Tocken Identifiant="(.*?)"/)
    {
    print out $1, "\n";
    }
    }
    close file;

    Merci pour ton aide.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 4
    Par défaut
    Oups,

    voici le code:

    @file = <MonFichierXML>;
    foreach $element (@file)
    {
    if ($element =~ /^< Tocken Identifiant="(.*?)"/)
    {
    print out $1, "\n";
    }
    }
    close file;

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Met des balises CODE autour de ton code (avec le bouton # de l'interface du forum), ce sera beaucoup plus lisible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @file = <MonFichierXML>;
    foreach $element (@file) {
      if ($element =~ /^< Tocken Identifiant="(.*?)"/) {
        print out $1, "\n";
      }
    }
    close file;
    D'où viennent "out", "file", "MonFichierXML" ? Où ouvres-tu ton fichier ? Peut-être faudrait-il réviser les bases de la manipulation de fichier, notre FAQ a de bons exemples.

    Note que le code que t'as donné iblis marche parfaitement, il suffit que tu mettes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/perl
     
    while (<>) {
        print $1, "\n" if /^< Tocken Identifiant="(.*?)"/; 
    }
    Dans un fichier extractXML.pl, puis tu peux l'appeler comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl extractXML.pl "Chemin de ton fichier xml"
    à partir de la ligne de commande.

    --
    Jedaï

Discussions similaires

  1. recuperer une chaine de caractere aleatoire
    Par ajupa dans le forum Général Python
    Réponses: 2
    Dernier message: 20/12/2007, 19h24
  2. recuperer une chaine
    Par pikaTuX dans le forum Débuter
    Réponses: 2
    Dernier message: 10/12/2007, 23h11
  3. forcer le input a recuperer une chaine de caractere
    Par okparanoid dans le forum Général Python
    Réponses: 3
    Dernier message: 08/07/2007, 01h00
  4. recuperer une chaine saisie en clavier
    Par salim81 dans le forum Langage
    Réponses: 1
    Dernier message: 07/09/2006, 10h31
  5. RXLIB recuperer une chaine d'un TFormStorage(TStoredValues)
    Par Henri-gp dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/12/2005, 23h13

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