src/test.cpp

См. документацию.
00001 //
00002 // C++ Implementation: test
00003 //
00004 // Description: 
00005 //
00006 //
00007 // Author: yessss <gennadiyesss@mail.ru>, (C) 2007
00008 //
00009 // Copyright: See COPYING file that comes with this distribution
00010 //
00011 //
00012 #include <stdio.h>
00013 #include <expat.h>
00014 #include <string.h>
00015 
00016 static void XMLCALL text_data (void *userData, const XML_Char *s, int len){
00017      XML_Char* c = (XML_Char*)malloc(sizeof(XML_Char)* len + 1);
00018      memcpy(c, s, len);
00019      c[len] = 0;
00020      printf("%i| %s\n", len, c);
00021      free(c);
00022 }
00023 
00024 int main(int argc, char *argv[]) {
00025      FILE* input = fopen("country.xml","r+");
00026   char buf[BUFSIZ];
00027   XML_Parser parser = XML_ParserCreate(NULL);
00028   int done;
00029   int depth = 0;
00030   XML_SetUserData(parser, &depth);
00031   XML_SetCharacterDataHandler(parser, text_data);
00032   do {
00033     size_t len = fread(buf, 1, sizeof(buf), input);
00034     done = len < sizeof(buf);
00035     if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
00036       fprintf(stderr,
00037               "%s at line %d\n",
00038               XML_ErrorString(XML_GetErrorCode(parser)),
00039               XML_GetCurrentLineNumber(parser));
00040       return 1;
00041     }
00042   } while (!done);
00043   XML_ParserFree(parser);
00044   fclose(input);
00045   return 0;
00046 }

Документация по XDataServer. Последние изменения: Thu Jul 12 11:49:42 2007. Создано системой  doxygen 1.5.2