From 494b16d6fbd565225e4f9ddaf2b813b520271753 Mon Sep 17 00:00:00 2001 From: Holger Dengler Date: Mon, 22 Oct 2012 17:05:03 +0200 Subject: Misc/xml: Add new XML fasttrack Add new miscellaneous section with an XML fasttrack. Coding samples are located in misc/samples/. Signed-off-by: Holger Dengler --- misc/samples/xml_sax.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 misc/samples/xml_sax.c (limited to 'misc/samples/xml_sax.c') diff --git a/misc/samples/xml_sax.c b/misc/samples/xml_sax.c new file mode 100644 index 0000000..b586a21 --- /dev/null +++ b/misc/samples/xml_sax.c @@ -0,0 +1,109 @@ +/* + * Simple SAX example + */ + +#include +#include +#include + +static int cb_total = 0; + +/* + * Callback implementations + */ +static void +cb_start_document(void *ctx ATTRIBUTE_UNUSED) +{ + cb_total++; + fprintf(stdout, "SAX.startDocument()\n"); +} + +static void +cb_end_document(void *ctx ATTRIBUTE_UNUSED) +{ + cb_total++; + fprintf(stdout, "SAX.endDocument()\n"); +} + +static void +cb_start_element(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts) +{ + int i; + + cb_total++; + fprintf(stdout, "SAX.startElement(%s", (char *) name); + if (atts != NULL) { + for (i = 0;(atts[i] != NULL);i++) { + fprintf(stdout, ", %s='", atts[i++]); + if (atts[i] != NULL) + fprintf(stdout, "%s'", atts[i]); + } + } + fprintf(stdout, ")\n"); +} + +static void +cb_end_element(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) +{ + cb_total++; + fprintf(stdout, "SAX.endElement(%s)\n", (char *) name); +} + +static void +cb_characters(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) +{ + char output[40]; + int i; + + cb_total++; + for (i = 0;(i