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

 Delphi Discussion :

Parser : Comment transformer du html en dataset ?


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Parser : Comment transformer du html en dataset ?
    Bonjour

    j'ai besoin de récupérer les champs Country et Points dans une page style celle la :
    http://www.wgc2010.sk/tasks/results/...PW5WGC2010.htm

    idéalement je voudrais récupérer un dataset a partir de cette page, pour ensuite le manipuler dans delphi

    => est-ce que vous connaissez un parser qui me permette de faire ca rapidement ?

    merci bcp
    anthony

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut


    je précise que j'ai la main sur le XSL qui genère la page html que j'ai linkée, donc si nécessaire je pourrais ajouter
    - un attribut class="country" sur les td de la colonne Country,
    - et pareil, un class="points" pour les td de la colonne Points ...

    merci pour votre aide !

    anthony

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 638
    Points : 25 357
    Points
    25 357
    Par défaut
    Si tu as un XSL, utilise le pour générer un XML pour le TClientDataSet !
    ça serait plus simple non ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    merci pour ta réponse
    je vais expliquer un minimum le contexte pour que ce soit plus clair :

    comme vous l'avez vu, la page que j'ai linkée est une page de résultats d'un concours de planeur

    cette page html est générée automatiquement avec un logiciel de scoring nommé SeeYou, elle présente les points du jour pour chaque pilote.

    et les concepteurs de SeeYou laissent la main sur le XSL qui genere la page, afin de permettre aux utilisateurs de pouvoir customiser la page de résultats (ajouter le logo du club, modifier l'ordre des colonnes, des choses comme ca)

    et ce XSL est sollicité directement par SeeYou lorsque l'utilisateur utilise la fonction "Enregistrer les résultats du jour au format HTML"

    si je changeais le XSL pour générer du XML utilisable ensuite pour constituer mon dataset, alors en contrepartie je n'aurais plus la génération de page de résultats sous sa forme HTML actuelle.

    c'est pour cela que je souhaite ajouter l'étape "parsing de la page actuelle de classement par pilote" pour générer une nouvelle page de classement par pays, a partir des nombres de points par pilote contenus ds la page actuelle.

    j'espere que ca vous semble pas trop débile comme approche ...

    merci pour vos conseils

    anthony

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    - Ton tableau html n'est pas cohérent: On y mélange des données qui n'ont rien à voir entre elles. Donc sémantiquement c'est compliqué de séparer les données.

    Si tu n'as pas besoin de garder la présentation HTML, la solution de Shai est la meilleure.

    Comme tu as accès au XSL (et que tu doives absolument garder une présentation HTML), sépares "l'entête" : (la partie du table avant les th),"le pied" (<td colspan="14">) et le corps en trois entités distinctes chacune étant nommée.

    Le mieux sera de faire une page XTHML valide, comme ça tu pourrais facilement parser ton tableau. (voir peut-être utiliser le mampeur XML de Delphi sur ton tableau).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Linkin Voir le message
    Si tu n'as pas besoin de garder la présentation HTML, la solution de Shai est la meilleure.
    ben en fait si, j'ai besoin de garder la presentation HTML, d'ou mon casse tete !


    Citation Envoyé par Linkin Voir le message
    Comme tu as accès au XSL (et que tu doives absolument garder une présentation HTML), sépares "l'entête" : (la partie du table avant les th),"le pied" (<td colspan="14">) et le corps en trois entités distinctes chacune étant nommée.
    a propos de ton conseil de "séparer en 3 entités" : je vois bien les 2 frontières que tu préconise entre ces 3 entités, mais comment je sépare, précisément ?

    désolé pour mes question peut etre basiques !

    anthony

  7. #7
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    Tu peux séparer en trois tableaux distincts, ça sera le plus simple. Ensuite tu nommes ton tableau (soit avec id, plus pertinent, soit avec class).

    Si tu passes page en XHTML, ça te permettra de parser ton tableau plus facilement.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    OK, 3 tableaux , j'ai compris

    par contre, "passer ma page en XHTML" ca veut dire quoi concretement ?
    ca veux dire m'assurer que toutes les préco du XHTML (que je connais pas d'ailleurs) sont respectées ?

    merci

    anthony

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    Concernant ton document, tu mets l'entête xhtml,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    tu fermes tes balises meta, br et img:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <br />
    <img src="cu-logo16.gif" />
    ça devrait suffire

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    OK merci Linkin, je comprends pourquoi tu es un "membre émérite" !

    anthony

  11. #11
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    et le logiciel que tu utilise ne permet pas d'export des résultats en csv ou en excel par exemple ?
    Peut-être utilise-t-il une base de données que tu pourrais accéder directement depuis Delphi ?

    @++
    Dany

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    ben non, ni export csv ou xls, ni DB !

    en fait, j'ai réfléchi, et je pense que ce que je vais faire, c'est simplement modifier le XLS pour ajouter un nom de class sur les 2 séries de TD qui m'interressent

    et apres je vais "parser" le HTML généré, en ne conservant que les TD qui contiennent mes 2 noms de class

    du coup ma question devient : existe-t-il un composant intégré a Delphi 2006 qui sache faire ce parsing simple, en me retournant juste le contenu des TD qui contiennent un nom de class donné ?

    merci

    anthnony

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 638
    Points : 25 357
    Points
    25 357
    Par défaut
    Avec le TWebBrowser et les Objets OleDocument IHTMLDocument ... tu pourras parcourir ton HTML, ... perso, je parsais le HTML sauvagement, nettement plus rapide ...

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    OK
    je penche aussi un peu pour un petit parsing manuel sauvage, surement plus rapide à coder que que de mettre en branle les classes Delphi ...

  15. #15
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    une autre suggestion tu peux utiliser une page php pour télécharger le fichier ainsi développer les opérations suivantes :

    • Lire le contenu de page cible
    • Parser le fichier expressions régulières
    • Envoie une entête xml
    • Créer un fichier xml compatible à TCientDataset

    inconvénient majeur c'est de trouver un hébergeur pour la page php

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    ah oui effectivement
    mais le plus gros probleme c'est que faire ca en PHP ca va me prendre la vie car je n'y connais presque rien !
    deja en Delphi je vais bien rencontrer des casses tetes, alors en PHP !
    merci pour ta réponse en tout cas
    anthony

Discussions similaires

  1. [ZF 1.10] Comment parser un nouveau tag HTML ? avec Zend_Markup ?
    Par r-zo dans le forum Zend Framework
    Réponses: 2
    Dernier message: 20/07/2012, 09h15
  2. comment transformer tableau html en xml tag ?
    Par lisadev dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 21/10/2008, 14h25
  3. [XSL] comment transformer ce fichier xml en une table html ?
    Par jlassira dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 15/03/2006, 12h15
  4. Réponses: 2
    Dernier message: 01/05/2005, 20h37
  5. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30

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