#include #include #include #include #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget fenetre; QXmlStreamReader reader;//Objet servant ŕ la navigation QString fileName = "listeboissons.xml"; QFile file(fileName); file.open(QFile::ReadOnly | QFile::Text); //Ouverture du fichier XML en lecture seul et en mode texte reader.setDevice(&file);//Initialise l'instance reader avec le flux XML venant de file QMap mapboissons; QString Marque=""; //Le but de cette boucle est de parcourir le fichier et de vérifier si l'on est au debut d'un element. reader.readNext(); while (!reader.atEnd()) { if (reader.isStartElement()) { if (reader.name() == "Listboissons") { reader.readNext();//On va au prochain token //Tant que celui-ci n'est pas un element de depart on avance au token suivant. while(reader.isStartElement()==false) reader.readNext(); if(reader.name() == "boisson") { reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); if(reader.name() == "marque") { Marque= reader.readElementText(); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } if(reader.name() == "PU") { QString PU = reader.readElementText(); mapboissons.insert(Marque,PU); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } } } } reader.readNext();//On va au prochain Token } file.close(); QString ch=""; if(!mapboissons.empty()) { QMap ::const_iterator i = mapboissons.constBegin(); while (i != mapboissons.constEnd()) { ch+=i.key()+"\t"+i.value()+"\n"; ++i; } } QLabel *label = new QLabel(ch, &fenetre); label->move(30, 20); fenetre.show(); return app.exec(); }