Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3083 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [resolut] Probleme de compilation avec QtXml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolut] Probleme de compilation avec QtXml

n°1581900
nebucade
Posté le 03-07-2007 à 14:26:50  profilanswer
 

Bonjour,
 
J'ai un probleme de compilation, le but de ce programme est de testé la lecture XML avec la bibliotheque QtXml
 
Voila pour faire simple quant je compile ca donne :
 

Code :
  1. compiling Xml.cpp (g++)
  2. generating moc_Xml.cpp (moc)
  3. src/Xml.h:0: Warning: No relevant classes found. No output generated.
  4. compiling moc_Xml.cpp (g++)
  5. linking xmlTest2 (g++)
  6. Xml.o: In function `Xml::Xml()':
  7. Xml.cpp:(.text+0x5e): undefined reference to `QDomDocument::QDomDocument(QString const& )'
  8. Xml.cpp:(.text+0xee): undefined reference to `QDomDocument::setContent(QIODevice*, QString*, int*, int*)'
  9. Xml.cpp:(.text+0x106): undefined reference to `QDomDocument::~QDomDocument()'
  10. Xml.cpp:(.text+0x152): undefined reference to `QDomDocument::~QDomDocument()'
  11. Xml.o: In function `Xml::Xml()':
  12. Xml.cpp:(.text+0x1ae): undefined reference to `QDomDocument::QDomDocument(QString const& )'
  13. Xml.cpp:(.text+0x23e): undefined reference to `QDomDocument::setContent(QIODevice*, QString*, int*, int*)'
  14. Xml.cpp:(.text+0x256): undefined reference to `QDomDocument::~QDomDocument()'
  15. Xml.cpp:(.text+0x2a2): undefined reference to `QDomDocument::~QDomDocument()'
  16. collect2: ld a retourné 1 code d'état d'exécution
  17. make: *** [xmlTest2] Erreur 1
  18. make: La cible « first » n'a pas pu être refabriquée à cause d'erreurs.
  19. *** Exited with status: 2 ***


 
le main :
 

Code :
  1. #include <QCoreApplication>
  2. #include "Xml.h"
  3. int main(int argc, char *argv[])
  4. {
  5.       QCoreApplication app(argc, argv);
  6. Xml a;
  7. a.Lire();
  8.       qDebug("Hello from Qt 4!" );
  9.       return 0;
  10. }


 
 
le xml.h

Code :
  1. #ifndef XML_H
  2. #define XML_H
  3. #include <QObject>
  4. #include <QMessageBox>
  5. //#include <QtXml/QtXml>
  6. #include <QtXml/QDomDocument>
  7. #include <QFile>
  8. class Xml :public QObject
  9. {
  10. Q_OBJECT
  11. public:
  12.  Xml();
  13.  ~Xml();
  14. public:
  15.  void Lire();
  16. private:
  17.  QDomDocument *doc;
  18. };
  19. #endif


 
 
le Xml.cpp
 

Code :
  1. #include "Xml.h"
  2. //#include <QtXml/QtXml>
  3. #include <QtXml/QDomDocument>
  4. Xml::Xml()
  5. {
  6.  QDomDocument doc("mydocument" );
  7. QFile file("config.xml" );
  8. if(!file.open(QIODevice::ReadOnly))
  9.  return;
  10. if(!doc.setContent(&file)){ // etablit le doc XML a partir des données du fichier
  11.  file.close();
  12.  return;
  13. }
  14. file.close();
  15. }
  16. Xml::~Xml()
  17. {
  18. }
  19. void Xml::Lire()
  20. {/*
  21. int i=0;
  22. QString affichage;
  23. QDomNodeList tab;
  24. QDomElement mesure;
  25. QDomNode n;
  26. QMessageBox a(0);
  27. QDomElement racine = doc.documentElement(); //renvoie la balise racine
  28. QDomNode noeud = racine.firstChild();  //renvoie la 1er balise
  29.  
  30. while(!noeud.isNull())
  31. {
  32.  //convertit le noeud en element pour utiliser les methodes tagName et attribute
  33.  mesure = noeud.toElement();
  34.  //verification du nom de la balise
  35.  if(mesure.tagName()=="systeme" )
  36.  {
  37.   affichage = mesure.attribute("id" );
  38.   if (affichage != "outil_postage" )
  39.   {
  40.    a.setText("probleme lecture fichier config !!" );
  41.    a.exec();
  42.    return ;
  43.   }
  44.   tab = mesure.childNodes();
  45.   for (i=0;i<tab.length();i++)
  46.   {
  47.    affichage = affichage + " "+n.firstChild().toText().data();
  48.   }
  49.   a.setText(affichage);
  50.   a.exec();
  51.  }
  52.  noeud = noeud.nextSibling();
  53. }
  54. */
  55. }


 
voila, j'ai retrouné le probléme dans tous les senses et je vois pas le probléme.
Si quelqu'un a une petite solution a me proposé ca serai cool,
 
Merci d'avance.


Message édité par nebucade le 17-07-2007 à 10:30:42
mood
Publicité
Posté le 03-07-2007 à 14:26:50  profilanswer
 

n°1581910
IrmatDen
Posté le 03-07-2007 à 14:50:15  profilanswer
 

Salut,
 
As-tu ajouté la ligne QT += xml à ton fichier pro? C'est en général la cause principale de ce type d'erreur...

n°1581923
nebucade
Posté le 03-07-2007 à 15:11:54  profilanswer
 

Ok c'est cool ca compile,
 
J'ai plus qu'a faire mes teste.
 
 
merci bien

n°1581961
nebucade
Posté le 03-07-2007 à 15:51:42  profilanswer
 

bon voila,
 
Je doit pas etre en forme today,
 
je crée un fichier xml
 

Code :
  1. <?xml version="1.0" ?>
  2. <configuration>
  3. <systeme id = "outil_postage" >
  4.  <serveur>
  5.   <mediacontact > mcsp-fr </mediacontact>
  6.   <basedonnee > winbdd1-fr:1433 </basedonnee>
  7.  </serveur>
  8.  <repertoire>
  9.   <lien> mcsp-fr/mfr/fr/centre/ </lien>
  10.   <out> out </out>
  11.  </repertoire>
  12.  <connection>
  13.   <loginMc> postage_MC </loginMc>
  14.   <loginPostage> postage_Mc </loginMc>
  15.   <passMc> postage_MC </passMc>
  16.   <passPostage> postage_MC </passMc>
  17.   <baseNameMc> MediaContact </baseMc>
  18.   <baseNamePostage> outilPostage </basePostage>
  19.   <driverBaseMc> QODBC </driverBaseMc>
  20.   <driverBasePostage> QODBC </driverBasePostag >
  21.  </connection>
  22. </systeme>
  23. </configuration >


 
 
bien sur j'ai supprimé le /* de la methode LIre avec quelque modif :
 

Code :
  1. QString Xml::Lire()
  2. {
  3. int i=0;
  4. QString affichage="vide";
  5. QDomNodeList tab;
  6. QDomElement mesure;
  7. QDomNode n;
  8. QDomElement racine = doc.documentElement(); //renvoie la balise racine
  9. QDomNode noeud = racine.firstChild();  //renvoie la 1er balise
  10. while(!noeud.isNull())
  11. {qDebug("###" );
  12.  //convertit le noeud en element pour utiliser les methodes tagName et attribute
  13.  mesure = noeud.toElement();
  14.  //verification du nom de la balise
  15.  qDebug(qPrintable(mesure.tagName()));
  16.  qDebug("###" );
  17.  if(mesure.tagName()=="configuration" )
  18.  {qDebug("ps" );
  19.   affichage = mesure.attribute("id" );
  20.   if (affichage != "outil_postage" )
  21.   {
  22.    affichage = "probleme lecture fichier config !!";
  23.    return affichage;
  24.   }
  25.   qDebug("ccc" );
  26.   tab = mesure.childNodes();
  27.   for (i=0;i<tab.length();i++)
  28.   {
  29.    qDebug("ddd" );
  30.    affichage = affichage + " "+n.firstChild().toText().data();
  31.   }
  32.   qDebug("oups" );
  33.  }
  34.  noeud = noeud.nextSibling();
  35. }
  36. return affichage;
  37. }


 
 
et le main devrai m'afficher des choses, mais en faite non car le noeud est vide !!!
 
Une petite idée pour moi auriez-vous ?
 
merci

n°1581995
IrmatDen
Posté le 03-07-2007 à 16:28:24  profilanswer
 

Le noeud est vide ou il est null? (ce n'est pas la même signification)
 
Je te conseille de debugger et de voir ce qui cloche, car au vu du code de ton constructeur, tu demandes de lire un document potentiellement vide (vu que tu ne fais qu'un return en cas d'échec de lecture de config.xml).

n°1582051
nebucade
Posté le 03-07-2007 à 17:18:24  profilanswer
 

oui j'ai vu ca,
 
En faite j'ai un probleme dans le constructeur.
 
le doc.setContent(&file) verifie le format du fichier xml, qui d'apres mon debug retourne un probleme.
 
La il me reste plus qu'a recuperé l'erreur avec la ligne et la colonne.
 
merci de ta reponse

n°1582058
nebucade
Posté le 03-07-2007 à 17:29:52  profilanswer
 

Bon ba voila,
 
apres avoir recup mes erreur, c'était tous simplement le fichier XML qui n'était pas bon.
 
Et oui vive les copier collé, mais apres faut pas oublié de changer correctement le nom de toute les balises


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [resolut] Probleme de compilation avec QtXml

 

Sujets relatifs
[javascript] problème de récursivitéProblème de copier coller de données depuis un classeur fermé.
Problème de conditionBatch Probleme Echo sur serveur distant
Problème saut ligne RSS => HTML via XSLGros probleme map sous IE
problème pour mettre un fond dans <body>problème d'onglet
N00b perl, problème étrangeprobleme de compilation
Plus de sujets relatifs à : [resolut] Probleme de compilation avec QtXml


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR