6 startElement(void *userData, const char *name, const char **atts) { return; }
9 endElement(void *userData, const char *name) { return; }
12 characterData(void *userData, const char *s, int len) { return; }
15 startCdata(void *userData) { return; }
18 endCdata(void *userData) { return; }
21 main(int argc, char *argv[])
25 FILE *xmlfile = stdin;
26 struct timeval timing1, timing2;
27 XML_Parser parser = XML_ParserCreateNS(NULL,' ');
28 XML_SetElementHandler(parser, startElement, endElement);
29 XML_SetCharacterDataHandler(parser, characterData);
30 XML_SetCdataSectionHandler(parser, startCdata, endCdata);
31 gettimeofday(&timing1, NULL);
33 size_t len = fread(buf, 1, sizeof(buf), xmlfile);
34 done = len < sizeof(buf);
35 if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
38 XML_ErrorString(XML_GetErrorCode(parser)),
39 XML_GetCurrentLineNumber(parser));
43 gettimeofday(&timing2, NULL) != 0;
44 XML_ParserFree(parser);
45 fprintf(stdout, "%d\n",
46 ((timing2.tv_sec * 1000000 + timing2.tv_usec) -
47 (timing1.tv_sec * 1000000 + timing1.tv_usec)) / 1000);