Annotation of embedaddon/libxml2/doc/examples/parse2.c, revision 1.1.1.1

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: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>