Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB

  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. */
  5. #include <stdio.h>
  6. #include "xmlparse.h"
  7. void startElement(void *userData, const char *name, const char **atts)
  8. {
  9. int i;
  10. int *depthPtr = userData;
  11. for (i = 0; i < *depthPtr; i++)
  12. putchar('\t');
  13. puts(name);
  14. *depthPtr += 1;
  15. }
  16. void endElement(void *userData, const char *name)
  17. {
  18. int *depthPtr = userData;
  19. *depthPtr -= 1;
  20. }
  21. int main()
  22. {
  23. char buf[BUFSIZ];
  24. XML_Parser parser = XML_ParserCreate(NULL);
  25. int done;
  26. int depth = 0;
  27. XML_SetUserData(parser, &depth);
  28. XML_SetElementHandler(parser, startElement, endElement);
  29. do {
  30. size_t len = fread(buf, 1, sizeof(buf), stdin);
  31. done = len < sizeof(buf);
  32. if (!XML_Parse(parser, buf, len, done)) {
  33. fprintf(stderr,
  34. "%s at line %d\n",
  35. XML_ErrorString(XML_GetErrorCode(parser)),
  36. XML_GetCurrentLineNumber(parser));
  37. return 1;
  38. }
  39. } while (!done);
  40. XML_ParserFree(parser);
  41. return 0;
  42. }