2010-04-27 2 views
2

Je souhaite fondamentalement utiliser l'analyseur XML de Qt dans mon projet existant. J'ai seulement utilisé Qt une fois auparavant, et c'était avec Qt Designer, et je n'ai pas beaucoup de chance de trouver quelque chose sur Google sur la façon d'utiliser la bibliothèque XML.Utilisation de la bibliothèque XML de Qt pour une opération simple

J'ai téléchargé une page Web qui a une grande liste, et je veux l'analyser et ajouter chaque élément de la liste à une liste C++. J'ai trouvé ce code exemple sur les forums Ubuntu ...

http://www.uluga.ubuntuforums.org/showpost.php?p=9112973&postcount=6

Je veux l'utiliser sauf que je dois savoir exactement ce que je dois ajouter au projet pour y avoir accès.

Une autre petite question est QDomDocument semble être pour les fichiers (a du sens) mais j'ai le XML dans une chaîne. Quelle partie de la bibliothèque XML fonctionne pour le contenu d'une chaîne?

Répondre

4

Le code suivant devrait vous donner un aperçu rapide de ce que vous devez faire avec les fonctionnalités Qt XML pour ce dont vous avez besoin.

#include <list> 
#include <QDomDocument> 
#include <QFile> 

int main() 
{ 
    QString filename("myfile.xml"); 
    std::list<QString> result; 
    int errorLine, errorColumn; 
    QString errorMsg; 
    QFile modelFile(filename); 
    QDomDocument document; 
    if (!document.setContent(&modelFile, &errorMsg, &errorLine, &errorColumn)) 
    { 
      QString error("Syntax error line %1, column %2:\n%3"); 
      error = error 
        .arg(errorLine) 
        .arg(errorColumn) 
        .arg(errorMsg); 
      return false; 
    } 
    QDomElement rootElement = document.firstChild().toElement(); 
    for(QDomNode node = rootElement.firstChild(); 
     !node .isNull(); 
     node = node .nextSibling()) 
    { 
     QDomElement element = node.toElement(); 
     result.push_back(element.tagName()); 
    } 
    return 0; 
} 

MISE À JOUR Je crois que vous avez seulement besoin de bibliothèque Qt base ainsi que la bibliothèque XML.

+0

Impressionnant, merci! –

1

Vous devez ajouter QtXml dans le fichier .pro et comprennent QDomDocument

ou seulement comprennent QDomDocument comme

include <QtXml/QDomDocument> 
+0

Quel niveau de projet inclut/libs dois-je utiliser QDomDocument? Les exemples de projets que j'ai regardés semblaient inclure tout, donc je ne suis pas sûr de ce que je peux laisser de côté. –

+0

Je vous montre comment utiliser un type (ici QDomDocument). Dans l'exemple que vous fournissez, vous devrez peut-être faire de même pour 'QDomNodeList' et' QDomElement' s'il n'est pas inclus par QDomDocument –

+1

ajouter au fichier .pro: QT + = xml –

Questions connexes