2 #include <libxml/parser.h>
3 #include <libxml/tree.h>
6 print_containment (xmlNode * a_node)
8 for (xmlNode *node = a_node; node; node = node->next)
10 if (node->type == XML_ELEMENT_NODE)
12 const xmlNode *parent = node->parent;
13 if (parent->type == XML_ELEMENT_NODE)
14 printf ("%s %s\n", parent->name, node->name);
15 else if (parent->type == XML_DOCUMENT_NODE)
16 printf ("<root> %s\n", node->name);
19 print_containment (node->children);
24 main (int argc, char **argv)
28 fprintf (stderr, "usage: %s FILE.xml\n", argv[0]);
34 xmlDoc *doc = xmlReadFile(argv[1], NULL, 0);
37 fprintf (stderr, "error: could not parse file %s\n", argv[1]);
41 xmlNode *root = xmlDocGetRootElement(doc);
42 print_containment(root);