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

Format d'échange (XML, JSON...) Java Discussion :

Expression réglière : Récupérer la valeur d'une balise xml


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut Expression réglière : Récupérer la valeur d'une balise xml
    Bonjour,

    Je souhaiterai utiliser les expressions régulières afin de pouvoir extraire la chaine se trouvant entre ma balise <libell> : <libelle>Standard_1</libelle>.
    Sachant que la chaine à extraire devra contenir des majuscules, minuscules, chiffres, caractères spéciaux...

    Voici ce que j'ai pu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public static void main(String arg[]) {
            Pattern p = Pattern.compile("<libelle>*</libelle>");
            String entree = "<libelle>Standard_1</libelle>";
            Matcher m = p.matcher(entree);
            while (m.find()) {
                System.out.println(entree.substring(m.start(), m.end()));
            }
        }
    A priori ça n'affiche rien sur l'écran

    Merci d'avance de votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 53
    Points
    53
    Par défaut
    Bonjour,
    Les regex permettent directement d'extraire les sous chaines souhaité.
    Pour cela il suffit de mettre le groupe a récuperer entre parenthèse.
    De plus ta regex comporte un problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "<libelle>*</libelle>"
    signifie :
    commence par '<libelle'
    comporte 0 à n '>'
    fini par '</libelle>'

    Ta regex serais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "<libelle>.*</libelle>"
    dans laquelle le '.' signifie n'importe quel caractere et le '*' indique qu'on prut l'avoir 0 à n fois.

    Enfin pour capturer l'intérieur des balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "<libelle>(.*)</libelle>"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pattern p = Pattern.compile("<libelle>(.*)</libelle>");
            String entree = "<libelle>Standard_1</libelle>";
            Matcher m = p.matcher(entree);
            if(m.matches()) {
                System.out.println(m.group(1));
            }
    Je pense que ceci devrai fonctionner.

    Cordialement,
    Fubuntu.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    J'ajoute que les regex c'est pas très doué pour parser du XML.

    Si on est sûr que le XML aura toujours la même tête et ne fera jamais de trucs bizarres, pourquoi pas. Mais un document XML a le droit de faire des trucs bizarres, il reste parfaitement correct.

    Exemple :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <document>
      <!-- <libelle>Ancien_Standard</libelle> -->
      <libelle>Standard_1</libelle>
    </document>

    Une regex sortira les deux libellés. Un vrai parseur XML ne sortira que celui qui n'est pas commenté.

  4. #4
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Merci fubuntu de ta réponse et merci thelvin pour ta précision.

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

Discussions similaires

  1. [RegEx] Récupérer attributs / valeurs d'une balise
    Par newbie_php dans le forum Langage
    Réponses: 5
    Dernier message: 02/02/2010, 22h48
  2. Réponses: 1
    Dernier message: 03/01/2010, 19h17
  3. Récupérer la valeur d'une balise XML
    Par mouna1 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 29/06/2009, 13h50
  4. Expression régulière - Récupérer la valeur entre 2 balises
    Par redkan dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 28/02/2009, 14h46
  5. récupérer la valeur d'une balise <a>
    Par ecdxml dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2008, 11h52

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