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

Bibliothèques Discussion :

[XML][tinyXML] Problême d'extraction de données XML ac tinyxml


Sujet :

Bibliothèques

  1. #1
    Membre habitué Avatar de Jahprend
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 255
    Points : 165
    Points
    165
    Par défaut [XML][tinyXML] Problême d'extraction de données XML ac tinyxml
    Bonjour à tous!

    J'aimerais extraire les données d'un fichier xml mais je rencontre un problême ac les différents noeuds! J'utilise tinyxml

    Je vous link un bout de mon fichier xml pour vous montrer mon probleme

    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
    <?xml version="1.0" encoding="utf-8" ?> 
    - <!--  Commentss: XmlWriter Bulletin Meteorem 
      --> 
    - <forecast>
    - <localization value="Rillieuxlapape_69">
    - <day value="01/12/05">
      <sunrise>08:01</sunrise> 
      <sunset>16:57</sunset> 
    - <hour value="06:00">
      <weather>Ensoleillé</weather> 
      <code>0</code> 
      <temperature>-2</temperature> 
      <winddirection>Sud-Ouest</winddirection> 
      <windforce>6</windforce> 
      </hour>
    - <hour value="12:00">
      <weather>Ensoleillé</weather> 
      <code>0</code> 
      <temperature>2</temperature> 
      <winddirection>Sud</winddirection> 
      <windforce>12</windforce> 
      </hour>
    - <hour value="18:00">
      <weather>Ensoleillé</weather> 
      <code>0</code> 
      <temperature>3</temperature> 
      <winddirection>Sud</winddirection> 
      <windforce>20</windforce> 
      </hour>
      </day>
    En gros j'arrive à extraire toutes les données jusqu'à la ligne
    <windforce>6</windforce>
    Mais je n'arrive pas à continuer l'extraction apres le noeud suivant c'est à dire: <hour value="12:00">

    Pour résumer je n'arrive pas (je ne connais pas les commandes) à extraire les diffénrents block (sauf le premier block) en dessous des balises indiquant l'heure.

    Je vous link mon programme pour vous montrer un peu ou j'en suis

    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
    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

  2. #2
    Membre habitué Avatar de Jahprend
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 255
    Points : 165
    Points
    165
    Par défaut
    Je me permet de faire un petit up

Discussions similaires

  1. Extraction de données xml sur un serveur avec extjs
    Par dasdo dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 30/07/2009, 20h03
  2. [SimpleXML] [débutant] Accès à des données XML
    Par pouktoro dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/04/2009, 19h51
  3. Problèmes d'accès à des données XML chargées
    Par netphenix dans le forum ActionScript 3
    Réponses: 7
    Dernier message: 03/09/2008, 09h27
  4. Problème utilisation Source de données XML
    Par Virtual78 dans le forum iReport
    Réponses: 1
    Dernier message: 19/09/2007, 14h59
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

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