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 :

Génération de XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut Génération de XML
    Bonjour a tous,

    je souhaite générer un fichier xml de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <RssFeed>
      <rss>http://www.lemonde.fr/rss/une.xml</rss>
    </RssFeed>
    Pour ce faire, j'ai commencé a faire ce code:

    .cpp
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
    #include "RssFeed.h"
     
    RssFeed::RssFeed(){
     
        //listeRss=getConfigList();
        getConfigList();
     
     
    }
     
    void RssFeed::getConfigList(){
     
        QString path=QDir::homePath()+QDir::separator()+"dossier";
     
        QDir *dossier=new QDir(path);
     
        // au verifie si le dossier existe
        if(!dossier->exists()){
     
            //il n'existe pas donc on creer le dossier
            dossier->mkdir(path);
     
           /***************** Genration du fichier XML de base ****************/
     
     
            QDomDocument doc;
     
     
            QDomNode xmlNode = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
            doc.insertBefore(xmlNode, doc.firstChild());
     
            QDomElement root = doc.createElement("RssFeed");
            doc.appendChild(root);
     
            QDomElement rss = doc.createElement("rss");
            root.appendChild(rss);
     
            QDomText rssText = doc.createTextNode("http://www.lemonde.fr/rss/une.xml");
            rss.appendChild(rssText);
     
            // le fichier qui va contenir le xml
            QFile f(path+QDir::separator()+"listeRss.ini");
            f.open(QIODevice::WriteOnly);
     
            QTextStream ts(&f);
     
            doc.save(ts, 2);
     
            f.close();
     
     
     
        }
        else{
        }
     
     
    }
     
     
    int main(int argc, char *argv[])
    {
        RssFeed f;
        return 0;
    }
    .h
    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
     
    #ifndef HEADER_RSSFEED
    #define HEADER_RSSFEED
    #include <QtGui>
    #include <QtXml/QDomDocument>
     
    class RssFeed
    {
        public:
            RssFeed();
            QFile *listeRss;
     
     
     
        protected:
            void getConfigList();
     
        private:
     
    };
     
    #endif

    Malheureusement, j'ai ceci comme erreur: (je dev pour l'instant sous qtCreator)
    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
     
    C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `D:/Mes documents/programmation/C_C++/QRssFeedAggregator-build-desktop'
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\QRssFeedAggregator.exe debug/main.o debug/InterfaceGraphique.o debug/RssFeed.o debug/moc_InterfaceGraphique.o  -L"c:\QtSDK\Desktop\Qt\4.7.3\mingw\lib" -lmingw32 -lqtmaind -lQtWebKitd4 -lQtGuid4 -lQtCored4 -LC:\OpenSSL-Win32_full\lib 
    mingw32-make[1]: Leaving directory `D:/Mes documents/programmation/C_C++/QRssFeedAggregator-build-desktop'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:51: undefined reference to `_imp___ZN12QDomDocumentC1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:54: undefined reference to `_imp___ZN12QDomDocument27createProcessingInstructionERK7QStringS2_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:54: undefined reference to `_imp___ZN8QDomNodeC1ERKS_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:54: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:54: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:57: undefined reference to `_imp___ZNK8QDomNode10firstChildEv'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:57: undefined reference to `_imp___ZN8QDomNode12insertBeforeERKS_S1_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:57: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:57: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:57: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:61: undefined reference to `_imp___ZN12QDomDocument13createElementERK7QString'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:64: undefined reference to `_imp___ZN8QDomNode11appendChildERKS_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:64: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:67: undefined reference to `_imp___ZN12QDomDocument13createElementERK7QString'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:70: undefined reference to `_imp___ZN8QDomNode11appendChildERKS_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:70: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:73: undefined reference to `_imp___ZN12QDomDocument14createTextNodeERK7QString'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:76: undefined reference to `_imp___ZN8QDomNode11appendChildERKS_'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:76: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:89: undefined reference to `_imp___ZNK8QDomNode4saveER11QTextStreami'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:91: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:91: undefined reference to `_imp___ZN8QDomNodeD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:91: undefined reference to `_imp___ZN12QDomDocumentD1Ev'
    debug/RssFeed.o:D:\Mes documents\programmation\C_C++\QRssFeedAggregator-build-desktop/../QRssFeedAggregator/RssFeed.cpp:91: undefined reference to `_imp___ZN12QDomDocumentD1Ev'
    debug/RssFeed.o: In function `~QDomProcessingInstruction':
    c:/QtSDK/Desktop/Qt/4.7.3/mingw/include/QtXml/qdom.h:649: undefined reference to `_imp___ZN8QDomNodeD2Ev'
    debug/RssFeed.o: In function `~QDomElement':
    c:/QtSDK/Desktop/Qt/4.7.3/mingw/include/QtXml/qdom.h:477: undefined reference to `_imp___ZN8QDomNodeD2Ev'
    debug/RssFeed.o: In function `~QDomCharacterData':
    c:/QtSDK/Desktop/Qt/4.7.3/mingw/include/QtXml/qdom.h:417: undefined reference to `_imp___ZN8QDomNodeD2Ev'
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\QRssFeedAggregator.exe] Error 1
    mingw32-make: *** [debug] Error 2
    Le processus "C:\QtSDK\mingw\bin\mingw32-make.exe" s'est terminé avec le code 2.
    Erreur à la compilation du projet QRssFeedAggregator (cible : Desktop)
    Lors de l'exécution de l'étape 'Make'
    Savez vous pourquoi cela ne fonctionne pas ?

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Tu as bien ajouté QT += xml dans ton .pro ? (sinon tu n'aurais pas pu avoir l'autocomplétion...)

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    Effectivement, il me manquai ceci.
    (mais j'avais l'autocompletion....)

    Comment je doit faire pour savoir quand rajouter quoi dans mon .pro ?

    De plus la, mon code me génère bien le fichier xml mais il est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8"?><RssFeed>  <rss>https://github.com/Ducatel.atom</rss></RssFeed>
    Comment faire pour ne pas tout mettre sur la même ligne ?

    Merci pour ton aide

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Qt est divisé en modules. Pour utiliser QtXxxx, il te faut rajouter un QT += xxxx. En principe de base tu as déjà QT += core gui, donc il suffit de rajouter xml, opengl, declarative... Bref tous les modules que tu utilises.

    Ensuite pour le formatage, pourquoi ne pas utiliser plutôt un QXmlStreamWriter qui permet de faire writer.setAutoFormatting(true); ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    D'accord, merci

    J'ai essayé QXmlStreamWriter, mais je me retrouve avec une popup qui contient cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    This application has requested the Runtime to terminate it in an unusual way.
    et En plus dans ma console, j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ASSERT: "!name.contains(QLatin1Char(':'))" in file c:\ndk_buildrepos\qt-desktop\src\corelib\xml\qxmlstream.cpp, line 3820
    Invalid parameter passed to C runtime function.
    Invalid parameter passed to C runtime function.

    voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QFile f(path+QDir::separator()+"listeRss.ini");
    f.open(QIODevice::WriteOnly| QFile::Text);
       QXmlStreamWriter writer(&f);
       writer.setAutoFormatting(true);
       writer.writeStartDocument();
          writer.writeStartElement("RssFeed");
             writer.writeStartElement("rss","https://github.com/XXXXX.atom");
          writer.writeEndElement();// fin du rss
       writer.writeEndDocument(); // fin du  RssFeed
    f.close();
    Je ne vois pas ou est mon erreur (désolé si je fais des erreur stupid, mais je débarque sous Qt

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Ton code m'a l'air ok, là il gueule parce qu'il ne trouve pas de ':' ici : writer.writeStartElement("rss","https://github.com/XXXXX.atom");
    Pourtant y'en a bien un...

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

Discussions similaires

  1. [XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture
    Par gator dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 04/02/2012, 18h17
  2. génération de xml par flash
    Par Catalan dans le forum Flash
    Réponses: 1
    Dernier message: 12/01/2007, 04h33
  3. [DOM] Génération de XML tout pas beau :(
    Par scorpiwolf dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 23/05/2006, 15h49
  4. Génération de XML
    Par Julien.alkaza dans le forum C++Builder
    Réponses: 5
    Dernier message: 06/04/2005, 15h28
  5. [LOMBOZ]Génération WEB.XML
    Par JWillow dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/12/2004, 23h54

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