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

Qt Discussion :

Parseur HTML qui ne parcourt pas tous les enfants ?


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    Points : 75
    Points
    75
    Par défaut Parseur HTML qui ne parcourt pas tous les enfants ?
    Bonjour,

    j'essaye de parser un fichier HTML, le problème c'est que je n'arrive pas à voir tous les enfants.

    Voici la source :
    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
    	QFile file(fileName);
     
    	// Ouverture du fichier en lecture seule et en mode texte
    	file.open(QFile::ReadOnly | QFile::Text);
     
    	QDomDocument web;
    	// Ajoute le contenu du fichier XML dans un QDomDocument et dit au QDomDocument de ne pas tenir compte des namespaces
    	web.setContent(&file, false);
     
    	// Ici, racine pointe sur l'élément <root> de notre document
    	QDomElement element = web.documentElement();
     
     
    	qDebug()<<"Nombre d'enfant "<<element.childNodes().length();
     
    	QDomNode node=element.firstChild();
    	qDebug()<< node.toElement().tagName();
     
    	qDebug()<< "Nombre sous enfant "<<node.childNodes().length();
     
    	for(unsigned int i=0;i<node.childNodes().length();i++)
    		qDebug()<<node.childNodes().item(i).toElement().tagName();
    et voici le fichier HTML sur lequel je fais mes tests

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


    <html>
    <head><link rel="stylesheet" href="../5/v15.css" type="text/css" />
    <meta http-equiv="Content-Language" content="fr" />
    <meta name="robots" content="index, follow" />
    <script src="http://.....jquery.js" type="text/javascript"></script>
    <script src="http://.....jqtools5.js" type="text/javascript"></script>
    <meta http-equiv=refresh content="240">
    <meta name="description" content=".......................................................">
    <meta name="keywords" content="...........................................................">
    <title>
    C...............................
    </title></head>
    <body style="margin:0px; border:0px; background: #ccc url(http://www.......................png) repeat-y 50% 0;">
    <form name="aspnetForm" method="post" action="display.aspx?s=DGp" id="aspnetForm">
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
    </div>
    Lorsque je lance le programme, voici ce qu'il me sort :
    Nombre d'enfant 1
    "head"
    Nombre sous enfant 5
    "link"
    "meta"
    "meta"
    "script"
    "script"


    Merci pour vos réponses.
    Lire c'est apprendre, faire c'est comprendre.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    SAlut.
    Html != xml. Donc ca ne marche pas toujours.
    Soit il te faut convertir ton html en un html lisible comme un xml (regarde tidy html) soit tu utilise
    http://qt.developpez.com/doc/latest/qwebelement/

  3. #3
    Membre habitué
    Avatar de bobti89
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 150
    Points
    150
    Par défaut
    Le résultat semble normal, même s'il peut paraitre incomplet.

    Le problème réside essentiellement sur le fait que ton fichier n'est pas du xml valide (balises non fermées (<html>, <body>, <form>...). Si tu remarques bien les meta fermées (avec /> à la fin) sont bien lues alors que les autres...
    bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    Points : 75
    Points
    75
    Par défaut
    Merci pour vos réponses.

    Effectivement, je n'avais pas vue QWebElement, a trop être dans le projet on fini par oublier l'essentiel.

    Donc je vais suivre cette direction.

    A+

    PS :

    @Yan : Oui, je sais que HTML est différent de XML, mais en cherchant sur la toile, j'ai vue des sources qui utilisaient cette méthode. Mais il semble que cela ne fonctionne pas toujours.

    @bobti89 : Ah, je n'avais pas remarqué le "/>".
    Lire c'est apprendre, faire c'est comprendre.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    Points : 75
    Points
    75
    Par défaut
    Le problème est résolu avec qwebelement.

    Merci.

    A+
    Lire c'est apprendre, faire c'est comprendre.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/12/2011, 16h52
  2. GlassPane qui ne recouvre pas tous les composants ?
    Par Lamarios dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 24/03/2010, 05h34
  3. Réponses: 3
    Dernier message: 18/11/2008, 15h31
  4. Réponses: 2
    Dernier message: 25/09/2006, 13h04
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

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