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>