]> git.tdb.fi Git - ext/subsurface.git/blob - parse.c
6277a9021aeb93da8ed9eb43d2d22aafbbb46397
[ext/subsurface.git] / parse.c
1 #include <stdio.h>
2 #include <libxml/parser.h>
3 #include <libxml/tree.h>
4
5 static void show_one_node(int i, xmlNode *node)
6 {
7         static const char indent[] = "        ..";
8
9         if (i >= sizeof(indent))
10                 i = sizeof(indent)-1;
11         printf("%.*snode '%s': %s\n", i, indent, node->name, node->content);
12 }
13
14 static void show(int indent, xmlNode *node)
15 {
16         xmlNode *n;
17
18         for (n = node; n; n = n->next) {
19                 show_one_node(indent, n);
20                 show(indent+2, n->children);
21         }
22 }
23
24 static void parse(const char *filename)
25 {
26         xmlDoc *doc;
27
28         doc = xmlReadFile(filename, NULL, 0);
29         if (!doc) {
30                 fprintf(stderr, "Failed to parse '%s'.\n", filename);
31                 return;
32         }
33
34         show(0, xmlDocGetRootElement(doc));
35         xmlFreeDoc(doc);
36         xmlCleanupParser();
37 }
38
39 int main(int argc, char **argv)
40 {
41         int i;
42
43         LIBXML_TEST_VERSION
44
45         for (i = 1; i < argc; i++)
46                 parse(argv[i]);
47         return 0;
48 }