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

AWT/Swing Java Discussion :

Récupérer une structure table HTML complète et pas seulement les données - HTMLEditorKit


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut Récupérer une structure table HTML complète et pas seulement les données - HTMLEditorKit
    Bonjour à tous,

    A partir d'un flux HTML, je souhaite récupérer à l'aide de la classe HTMLEditorKit la table et sa structure.

    Par exemple, si dans mon flux HTML, j'ai la structure suivante (parmi d'autres données bien sûr), comment faire pour que, avec la classe HTMLEditorKit, je puisse récupérer directement toute cette structure (i.e les données ET les tag TABLE, TR, TD,... ), et pas seulement les données (test1_1_1,...) :


    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
     
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <table>
    <tr>
    <td>test1_1_1</td>
    <td>test1_1_2</td>
    </tr>
    <tr>
    <td>test1_2_1</td>
    <td>test1_2_2</td>
    </tr>
    </table>
    </body>
    </html>

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Je vais me répondre à moi-même pour essayer de préciser ma demande.
    En fait, j'ai créé une classe ScannerParserCallback qui redéfinit les méthodes handleStartTag(), handleText() et handleEndTag().
    La variable result est un StringBuffer qui va contenir le résultat recherché et je positionne un booléen aPrendre qui est à false quand ce n'est pas une structure table qui est parsée.
    Le code ci-dessous fonctionne, mais je le trouve...inesthétique. N'y a t'il pas un moyen plus élégant pour y arriver ?

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
        private class ScannerParserCallback extends ParserCallback {
            @Override
            public void handleStartTag(Tag t, MutableAttributeSet a, int pos) {
                if ((t.toString()).equals("table")) {
                    System.out.print("\n<TABLE>");
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = true;
                }
                if ((t.toString()).equals("td")) {
                    System.out.print("|");
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = true;
                }
                if ((t.toString()).equals("tr")) {
                    System.out.println();
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = true;
                }
                if ((t.toString()).equals("th")) {
                    System.out.println();
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = true;
                }
            }
            @Override
            public void handleText(char[] data, int pos) {
                System.out.print(data);
                if (aPrendre) {
                    result.append(data);
                }
                System.out.print(" ");
            }
     
            @Override
            public void handleEndTag(HTML.Tag t, int pos) {
                if ((t.toString()).equals("table")) {
                    System.out.println("\n</table>");
                    result.append("</").append(t.toString()).append(">");
                    aPrendre = false;
                }
                if ((t.toString()).equals("td")) {
                    System.out.print("|");
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = false;
                }
                if ((t.toString()).equals("tr")) {
                    System.out.println();
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = false;
                }
                if ((t.toString()).equals("th")) {
                    System.out.println();
                    result.append("<").append(t.toString()).append(">");
                    aPrendre = false;
                }
            }
        }

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Il n'est pas intéressant mon problème ?

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Aucune réaction, je suis surpris...
    Peut-être est ce un faux problème et qu eje m'y prends mal...mais je ne vois pas quoi faire d'autre ?
    Si quelqu'un veut bien me répondre...

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pourquoi ne pas directement utiliser un parser HTML?

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Citation Envoyé par sinok Voir le message
    Pourquoi ne pas directement utiliser un parser HTML?
    Ben, c'est ce que je fais, non ?

  7. #7
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    En fait, je vais répondre pour tout le monde (je pense). C'est quoi l'intérêt de transformer un tableau HTML (balise table) vers du Java.

    Du XML oui, ça d'accord, mais du HTML (?!!!?)

    C'est un peu le serpent qui se mord la queue. Java peut servir à produire du HTML, mais le HTML ne peut pas servir à produire du Java.

    Zecreator.

  8. #8
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Citation Envoyé par zecreator Voir le message
    En fait, je vais répondre pour tout le monde (je pense). C'est quoi l'intérêt de transformer un tableau HTML (balise table) vers du Java.

    Du XML oui, ça d'accord, mais du HTML (?!!!?)

    C'est un peu le serpent qui se mord la queue. Java peut servir à produire du HTML, mais le HTML ne peut pas servir à produire du Java.

    Zecreator.
    C'est quoi l'intérêt ?
    Eh bien, c'est que ce qu'il y a en dehors de la table ne m'intéresse pas...je veux seulement récupérer le contenu de la table pour l'afficher dans mon JEditorPane.

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Les parsers html que je t'ai proposé sont vachement plus évolués et propres que ta bidouille. As tu été voir au moins?

  10. #10
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    Citation Envoyé par sinok Voir le message
    Les parsers html que je t'ai proposé sont vachement plus évolués et propres que ta bidouille. As tu été voir au moins?
    Oui, avant de poster sur le forum, j'étais tombé sur cette liste.
    Mais je me suis dit pourquoi aller intégrer une nème librairie supplémentaire alors que le jdk propose un parser en standard ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/06/2014, 21h21
  2. [WD19] WebService, récupérer une structure
    Par MasterMbg dans le forum WinDev
    Réponses: 0
    Dernier message: 26/03/2014, 13h31
  3. Récupérer une querystring côté HTML
    Par zooffy dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/04/2010, 11h07
  4. Récupérer une structure depuis une liste
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 01/04/2007, 21h34
  5. Réponses: 11
    Dernier message: 04/05/2006, 11h50

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