1
/* This is simple demonstration of how to use expat. This program
2
reads an XML document from standard input and writes a line with the
3
name of each element to standard output indenting child elements by
4
one tab stop more than their parent element. */
10
startElement(void *userData, const char *name, const char **atts)
13
int *depthPtr = userData;
14
for (i = 0; i < *depthPtr; i++)
21
endElement(void *userData, const char *name)
23
int *depthPtr = userData;
28
main(int argc, char *argv[])
31
XML_Parser parser = XML_ParserCreate(NULL);
34
XML_SetUserData(parser, &depth);
35
XML_SetElementHandler(parser, startElement, endElement);
37
size_t len = fread(buf, 1, sizeof(buf), stdin);
38
done = len < sizeof(buf);
39
if (!XML_Parse(parser, buf, len, done)) {
42
XML_ErrorString(XML_GetErrorCode(parser)),
43
XML_GetCurrentLineNumber(parser));
47
XML_ParserFree(parser);