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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| #include <DOS.H>
#include <iostream>
#include <stdio>
#include <stdlib>
#include "tinyxml.h"
#include "define.h"
int idSemaphoreAlloc ;
int idSemaphoreFichier ;
//*********************** Classe Meteo *********************************
//création d'une classe météo permettant de récupérer les données de 3 champs
//du fichier XML (localization, day, hour)
class meteo
{
public:
const char* localization;
const char* day;
const char* hour;
};
//************************* MAIN ***********************************
int main(void)
{
//Séléction du fichier XML dont il faudra extraire les données
TiXmlDocument doc("rill.xml");
//Erreur lors de la recherhce du fichier XML
if(!doc.LoadFile())
{
cerr << "erreur lors du chargement" << endl;
cerr << "error #" << doc.ErrorId() << " : " << doc.ErrorDesc() << endl;
return 1;
}
//Création d'un objet de type TiXmlHandle avec en paramètre doc qui permettra
//par la suite la récupération des informations entre les balises
TiXmlHandle hdl(&doc);
//création de elem qui permettra de récupérer les informations du fichier XML en fonction de la balise choisie
TiXmlElement *ele = hdl.FirstChildElement("forecast").FirstChildElement("localization").Element();
TiXmlElement *ele1 = hdl.FirstChildElement("forecast").FirstChildElement("localization").FirstChildElement("day").Element();
TiXmlElement *ele2 = hdl.FirstChildElement("forecast").FirstChildElement("localization").FirstChildElement("day").FirstChildElement("hour").Element();
TiXmlElement* elem = hdl.FirstChildElement("forecast").FirstChildElement("localization").FirstChildElement("day").FirstChildElement("sunrise").Element();
TiXmlElement* elem2 = hdl.FirstChildElement("forecast").FirstChildElement("localization").FirstChildElement("day").FirstChildElement("hour").FirstChildElement("weather").Element();
//boucle pour vérifier que l'élément ait bien un enfant
if(!elem)
cout<<"l'element n'a pas enfant"<<endl;
//création d'un objet cl de la classe meteo
meteo cl;
//sleep pour permettre un bon affichage des données sur telnet
sleep(1);
cout<<endl;
//Récupération de la valeur du champ "localization"
cl.localization = ele->Attribute("value");
cout<<"localization:"<<cl.localization<<endl;
//boucle permettant de récupérer la valeur du champ "day"
while(ele1)
{
cl.day = ele1->Attribute("value");
cout<<"day:"<<cl.day<<endl;
//boucle permettant de récupérer la valeur du champ "sunrise" et "sunset"
while(elem)
{
if(elem->GetText()) //n'affiche pas le nom des balises des champs vides
cout << elem->Value() // Recupere le nom de la balise
<<":"<< elem->GetText() << endl; // Recupere le texte entre les balises
elem=elem->NextSiblingElement(); //on passe a l'enfant suivant
}
//boucle permettant de récupérer la valeur du champ "hour"
while(ele2)
{
cl.hour = ele2->Attribute("value");
cout<<"hour:"<<cl.hour<<endl;
ele2=ele2->NextSiblingElement();
//boucle permettant de récupérer la valeur du champ "weather" à "windforce"
while(elem2)
{
cout << elem2->Value() <<":"<< elem2->GetText() << endl;
elem2=elem2->NextSiblingElement();
}//fin boucle elem2
}//fin boucle ele2
ele1=ele1->NextSiblingElement();
}//fin boucle ele1
}//fin du programme |
Partager