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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    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.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    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 confirmé
    Avatar de bobti89
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    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...

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    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 "/>".

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

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

    Merci.

    A+

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

Discussions similaires

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

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