Return to parse2.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / doc / examples |
1.1 ! misho 1: /** ! 2: * section: Parsing ! 3: * synopsis: Parse and validate an XML file to a tree and free the result ! 4: * purpose: Create a parser context for an XML file, then parse and validate ! 5: * the file, creating a tree, check the validation result ! 6: * and xmlFreeDoc() to free the resulting tree. ! 7: * usage: parse2 test2.xml ! 8: * test: parse2 test2.xml ! 9: * author: Daniel Veillard ! 10: * copy: see Copyright for the status of this software. ! 11: */ ! 12: ! 13: #include <stdio.h> ! 14: #include <libxml/parser.h> ! 15: #include <libxml/tree.h> ! 16: ! 17: /** ! 18: * exampleFunc: ! 19: * @filename: a filename or an URL ! 20: * ! 21: * Parse and validate the resource and free the resulting tree ! 22: */ ! 23: static void ! 24: exampleFunc(const char *filename) { ! 25: xmlParserCtxtPtr ctxt; /* the parser context */ ! 26: xmlDocPtr doc; /* the resulting document tree */ ! 27: ! 28: /* create a parser context */ ! 29: ctxt = xmlNewParserCtxt(); ! 30: if (ctxt == NULL) { ! 31: fprintf(stderr, "Failed to allocate parser context\n"); ! 32: return; ! 33: } ! 34: /* parse the file, activating the DTD validation option */ ! 35: doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID); ! 36: /* check if parsing suceeded */ ! 37: if (doc == NULL) { ! 38: fprintf(stderr, "Failed to parse %s\n", filename); ! 39: } else { ! 40: /* check if validation suceeded */ ! 41: if (ctxt->valid == 0) ! 42: fprintf(stderr, "Failed to validate %s\n", filename); ! 43: /* free up the resulting document */ ! 44: xmlFreeDoc(doc); ! 45: } ! 46: /* free up the parser context */ ! 47: xmlFreeParserCtxt(ctxt); ! 48: } ! 49: ! 50: int main(int argc, char **argv) { ! 51: if (argc != 2) ! 52: return(1); ! 53: ! 54: /* ! 55: * this initialize the library and check potential ABI mismatches ! 56: * between the version it was compiled for and the actual shared ! 57: * library used. ! 58: */ ! 59: LIBXML_TEST_VERSION ! 60: ! 61: exampleFunc(argv[1]); ! 62: ! 63: /* ! 64: * Cleanup function for the XML library. ! 65: */ ! 66: xmlCleanupParser(); ! 67: /* ! 68: * this is to debug memory for regression tests ! 69: */ ! 70: xmlMemoryDump(); ! 71: return(0); ! 72: }