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

Discussion :

Récupérer et parser un fichier XML à partir d'une URL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Récupérer et parser un fichier XML à partir d'une URL
    Salut à tous!
    Je commence avec Qt.
    Je bloque pour récupérer un fichier XML d'une API à partir d'une URL.

    J'ai commencé à coder ça:

    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
     
    QUrl url("http://api.allocine.fr/xml/search?q="+ nom + "&partner=1");
     
    QNetworkRequest req(url);
    QNetworkAccessManager *m = new QNetworkAccessManager;
    QNetworkReply *r= m->get(req);
     
    QFile xml("search.xml");
     
    xml.write(r->readAll());
    xml.close();
     
    QDomDocument xml("doc");
    doc.setContent(&xml);
     
    // Lecture du fichier XML
    Mais sa ne marche pas et je me demande s'il n'y a pas en faite plus simple.

    Merci d'avance de votre aide!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 743
    Points
    743
    Par défaut
    Salux !

    Je n'ai pas testé, mais QNetworkReply est un QIODevice, tu dois donc pouvoir passer par un QXmlStreamReader ou un QDomDocument (au choix). setContent de QDomDocument doit pouvoir accepter directement ton QNetworkReply.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Salut à toi!

    Merci de ta réponse, j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    QUrl url("http://api.allocine.fr/xml/search?q="+ nom + "&partner=1");
     
    QNetworkRequest req(url);
    QNetworkAccessManager *m = new QNetworkAccessManager;
    QNetworkReply *r= m->get(req);
     
    QDomDocument xml("search");
    doc.setContent(r);
     
     
    // Lecture du fichier XML

    Mais sa ne marche toujours pas (setContent renvoie false). Quand je passe le curseur sur setContent il m'indique :
    bool QDomDocument::setContent ( QXmlInputSource * source, QXmlReader * reader, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 )




    Et pour le XmlStreamReader sa ne marche pas non plus.

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu devrais deja regarder la FAQ et surtout ce lien.

    Pour info QNetworkAccessManager possède des fonctions asynchrones.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci de ta réponse. J'ai pris en compte ta remarque, ça donne donc:

    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
    void Parser::connecter(){
     
        QNetworkAccessManager *manager = new QNetworkAccessManager;
        manager->get(QNetworkRequest(QUrl("http://api.allocine.fr/xml/search?q=lord&partner=1")));
        connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(result(QNetworkReply *)));
    }
     
     
    void Parser::result(QNetworkReply *reply)
    {
        QFile xml("search.xml");
        xml.write(reply->readAll());
        xml.close();
     
        QDomDocument doc("doc");
        doc.setContent(&xml);
     
        //analyse
     
     }
    Mais il ne rentre même pas dans la méthode result, je me demande s'il veut bien récupérer un fichier xml

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Juste pour essayer tu veux pas faire d'abord le connect et apres le get() je pense que c'est plus logique. Apres si tu ne passe vraiment pas dans ton slot et bien je ne sait vraiment pas pourquoi sa bug.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Oui tu as raison cela parait plus logique, mais sa ne marche pas non plus.
    connect me renvoie faux.

Discussions similaires

  1. [JDOM] parser un fichier xml à partir d'une url
    Par nounouuuuu201186 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 08/02/2012, 15h04
  2. Ouvrir un fichier XML à partir d'une URL
    Par Deblang dans le forum C++
    Réponses: 8
    Dernier message: 12/04/2011, 23h08
  3. Récupérer des fichiers XML à partir d'une Table
    Par faraway dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/09/2009, 11h32
  4. Lire un fichier XML à partir d'une URL
    Par spaukensen dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 11h03
  5. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06

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