1 | /**
|
---|
2 | * section: Parsing
|
---|
3 | * synopsis: Parse an XML document in memory to a tree and free it
|
---|
4 | * purpose: Demonstrate the use of xmlReadMemory() to read an XML file
|
---|
5 | * into a tree and and xmlFreeDoc() to free the resulting tree
|
---|
6 | * usage: parse3
|
---|
7 | * test: parse3
|
---|
8 | * author: Daniel Veillard
|
---|
9 | * copy: see Copyright for the status of this software.
|
---|
10 | */
|
---|
11 |
|
---|
12 | #include <stdio.h>
|
---|
13 | #include <libxml/parser.h>
|
---|
14 | #include <libxml/tree.h>
|
---|
15 |
|
---|
16 | static const char *document = "<doc/>";
|
---|
17 |
|
---|
18 | /**
|
---|
19 | * example3Func:
|
---|
20 | * @content: the content of the document
|
---|
21 | * @length: the length in bytes
|
---|
22 | *
|
---|
23 | * Parse the in memory document and free the resulting tree
|
---|
24 | */
|
---|
25 | static void
|
---|
26 | example3Func(const char *content, int length) {
|
---|
27 | xmlDocPtr doc; /* the resulting document tree */
|
---|
28 |
|
---|
29 | /*
|
---|
30 | * The document being in memory, it have no base per RFC 2396,
|
---|
31 | * and the "noname.xml" argument will serve as its base.
|
---|
32 | */
|
---|
33 | doc = xmlReadMemory(content, length, "noname.xml", NULL, 0);
|
---|
34 | if (doc == NULL) {
|
---|
35 | fprintf(stderr, "Failed to parse document\n");
|
---|
36 | return;
|
---|
37 | }
|
---|
38 | xmlFreeDoc(doc);
|
---|
39 | }
|
---|
40 |
|
---|
41 | int main(void) {
|
---|
42 | /*
|
---|
43 | * this initialize the library and check potential ABI mismatches
|
---|
44 | * between the version it was compiled for and the actual shared
|
---|
45 | * library used.
|
---|
46 | */
|
---|
47 | LIBXML_TEST_VERSION
|
---|
48 |
|
---|
49 | example3Func(document, 6);
|
---|
50 |
|
---|
51 | /*
|
---|
52 | * Cleanup function for the XML library.
|
---|
53 | */
|
---|
54 | xmlCleanupParser();
|
---|
55 | /*
|
---|
56 | * this is to debug memory for regression tests
|
---|
57 | */
|
---|
58 | xmlMemoryDump();
|
---|
59 | return(0);
|
---|
60 | }
|
---|