-
-
Save tlhc/063cb4b1f8e0ff7a0ea2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* ===================================================================================== | |
* | |
* Filename: el.c | |
* | |
* Description: | |
* | |
* Version: 1.0 | |
* Created: 2014年06月19日 10时28分18秒 | |
* Revision: none | |
* Compiler: gcc | |
* | |
* Author: tl | |
* Organization: | |
* | |
* ===================================================================================== | |
*/ | |
#include <stdio.h> | |
#include <expat.h> | |
#if defined(__amigaos__) && defined(__USE_INLINE__) | |
#include <proto/expat.h> | |
#endif | |
#ifdef XML_LARGE_SIZE | |
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 | |
#define XML_FMT_INT_MOD "I64" | |
#else | |
#define XML_FMT_INT_MOD "ll" | |
#endif | |
#else | |
#define XML_FMT_INT_MOD "l" | |
#endif | |
static void XMLCALL | |
startElement(void *userData, const char *name, const char **atts) | |
{ | |
int i; | |
int *depthPtr = (int *)userData; | |
for (i = 0; i < *depthPtr; i++) | |
putchar('\t'); | |
puts(name); | |
*depthPtr += 1; | |
} | |
static void XMLCALL | |
endElement(void *userData, const char *name) | |
{ | |
int *depthPtr = (int *)userData; | |
*depthPtr -= 1; | |
} | |
int | |
main(int argc, char *argv[]) | |
{ | |
char buf[BUFSIZ]; | |
XML_Parser parser = XML_ParserCreate(NULL); | |
int done; | |
int depth = 0; | |
XML_SetUserData(parser, &depth); | |
XML_SetElementHandler(parser, startElement, endElement); | |
do { | |
int len = (int)fread(buf, 1, sizeof(buf), stdin); | |
done = len < sizeof(buf); | |
if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) { | |
fprintf(stderr, | |
"%s at line %" XML_FMT_INT_MOD "u\n", | |
XML_ErrorString(XML_GetErrorCode(parser)), | |
XML_GetCurrentLineNumber(parser)); | |
return 1; | |
} | |
} while (!done); | |
XML_ParserFree(parser); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment