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,