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

C++ Discussion :

XML parsing avec Expat


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 64
    Par d�faut XML parsing avec Expat
    Bonjour,

    Je dois cr�er un petit parser XML pour un projet multi-plateforme programm� en CPP. J'utilise Expat pour cr�er mon parser. Cependant cela ne semble pas fonctionner correctement .... En effet le programme compile et s'execute sans segfault mais rien ne s'affiche ...

    voici mon code :

    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
     
    #include <expat.h>
    #include <fstream>
    #include <iostream>
    #include <iomanip>
     
    using namespace std;
     
    void startElement(void *userData, const char *name, const char **atts) {
    	int i;
     
    	cerr << name << endl;
     
    	for (i=0; atts[i] ; i+=2)
    		cerr << atts[i] <<endl;
    }
     
    void endElement(void *userData, const char *name) {
     
    	cerr << name;
    }
     
    int main(void) {
     
    	filebuf *fbuf;
    	long size;
    	char *buffer;
     
    	ifstream file_in("test.xml", ios::in);
     
    	XML_Parser parser = XML_ParserCreate(NULL);
    	XML_SetUserData(parser, NULL); 
    	XML_SetElementHandler(parser, startElement, endElement);
     
    	fbuf = file_in.rdbuf();
     
    	size = fbuf->pubseekoff (0,ios::end,ios::in);
    	fbuf->pubseekpos (0,ios::in);
     
    	buffer = new char[size];
    	fbuf->sgetn (buffer, size);
     
    	XML_Parse(parser, buffer, size, NULL);
     
    	file_in.close();
     
    	XML_ParserFree(parser);
     
    	free(buffer);
    }
    Savez-vous pourquoi rien ne s'affiche ?

    merci,

  2. #2
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Remplacer cerr par cout ?

    Et avant qu'on te gronde, remplace vite free(buffer) par delete [] buffer.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 64
    Par d�faut
    Cela ne change rien ici.

  4. #4
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Rajoutes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    // write content to stdout
      cout.write (buffer,size);
    apr�s la lecture du buffer (comme dans C++Reference � l'origine de l'erreur free/delete[] )pour voir ce que tu lis dans ton fichier. Ca permettra d�j� de savoir si l'erreur vient du parser XML ou de la lecture du fichier.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 64
    Par d�faut
    Le fichier XML s'affiche bien en entier dans la console. C'est le parser qui ne fonctionne pas correctement semble-t-il.

  6. #6
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Et si tu fais juste :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    void startElement(void *userData, const char *name, const char **atts) {
       std::cout<<"ok\n";
    }
    Tu y passes au - une fois ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. xml parse avec javascript
    Par adel25 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 13/04/2009, 20h45
  2. [XML] Parsing avec Ant?
    Par Knuckles dans le forum Format d'�change (XML, JSON...)
    R�ponses: 5
    Dernier message: 17/06/2008, 09h28
  3. [JDOM] java & XML, probl�me de parsing avec JDOM
    Par OreillePointue dans le forum Format d'�change (XML, JSON...)
    R�ponses: 9
    Dernier message: 11/01/2008, 10h17
  4. [C][Expat][XML] Touver un champ avec expat
    Par chronos dans le forum C
    R�ponses: 5
    Dernier message: 29/01/2007, 09h23
  5. [DOM XML] Parse XML DOM avec PHP
    Par �om dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 27/01/2007, 16h58

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