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

Java Discussion :

Expressions régulières : traitement de HtmlPage + API HtmlUnit


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut Expressions régulières : traitement de HtmlPage + API HtmlUnit
    Bonjour à tous,

    Dans le cadre d'un projet, je dois developper une application qui utilise l'automate HtmlUnit.
    Je traite un formulaire. En effet, j'assigne des valeurs aux champs d'un formulaire situé dans un site distant.
    Après, j'essaie de voir le résultat de validation de ce formulaire comme ce ci :
    je récupère le code source de la page html. Puis, j'utilise les expressions régulières pour délimiter l'information que je veux la récupérer.

    Mon problème réside quand je récupère le code source de la page contenant le résultat de validation du formulaire.
    l'utilisation des expressions régulières ne me donne rien.
    Pour bien comprendre voici mon code :
    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
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.html.*;
     
    public class test {
     
    	public static void main (String [] args)throws Exception{
     
    	    final WebClient webClient = new WebClient();
     
    	    // Get the first page
    	    final HtmlPage page1 = webClient.getPage("http://url-of-form");
     
    	    // Get the form that we are dealing with and within that form, 
    	    // find the submit button and the field that we want to change.
    	    final HtmlForm form = page1.getFormByName("form_1");
     
    	    final HtmlSubmitInput button = form.getInputByName("Submit");
    	    final HtmlTextInput nom = form.getInputByName("nom");
    	    final HtmlTextInput soc = form.getInputByName("societe");
    	    final HtmlTextInput adr = form.getInputByName("adresse");
    	    final HtmlTextInput pren = form.getInputByName("prenom");
     
    // Change the value of the text field
    	    nom.setValueAttribute("20");
    	    soc.setValueAttribute("20");
    	    adr.setValueAttribute("20");
    	    pren.setValueAttribute("30");
     
     
    	    // Now submit the form by clicking the button and get back the second page. <TITLE>Contact</TITLE>
     
    	     HtmlPage page2 = button.click();
    	     String s=page2.asXml();//j'obtiens un fichier xml dont la racine est la balise <html>
     
     
    Pattern p = Pattern.compile("<span class=\"uFNSize3\">(.*?)</span>");
    	    Matcher m = p.matcher(s);
    	     if (m.find()) 
    	    	 System.out.println("le contenu est : " + m.group());
    	     else System.out.println("le contenu est vide");
    le résultat affiché : "le contenu est vide"
    le résultat attendu : le contenu en tre les 2 motifs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class=\"uFNSize3\">(.*?)</span>
    Quelqu'un a une idée?

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 688
    Par défaut
    Le contenu entre les motifs est il réparti sur plusieurs lignes?

    Par défaut le point ne gère pas les retours à la ligne. Pour qu'il le face il faut soit ajouter le paramètre Pattern.DOTALL au compile ou ajouter (?s) au début de l'expression régulière

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    C'est très gentil de ta part Uther. C'est bien marché.
    En fai j'ai ajouté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pattern p = Pattern.compile("(?s)<span class=\"uFDiv3\">(.*?)</span>");
    Merci encore.

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

Discussions similaires

  1. Expressions régulières en SQL et traitement de chaîne
    Par jeremdu94 dans le forum Développement
    Réponses: 2
    Dernier message: 06/01/2011, 15h55
  2. traitement d'expression régulières
    Par Smix007 dans le forum C#
    Réponses: 6
    Dernier message: 22/09/2009, 16h35
  3. Réponses: 93
    Dernier message: 15/04/2009, 15h34

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