#include #include #include static void print_element_names(xmlNode *); int main(int argc, char **argv) { xmlDocPtr my_doc = NULL; xmlNode *root_element = NULL; char *filename; int rc = 1; if (argc != 2) { rc = 1; goto out; } filename = argv[1]; /* ABI checking (opt.) */ LIBXML_TEST_VERSION my_doc = xmlReadFile(filename, NULL, 0); if (!my_doc) { rc = 1; goto out_cleanup; } /*Get the root element node */ root_element = xmlDocGetRootElement(my_doc); print_element_names(root_element); rc = 0; out_freedoc: /* Free parsed DOM tree */ xmlFreeDoc(my_doc); out_cleanup: /* Cleanup function for the XML library */ xmlCleanupParser(); out: return(rc); } static void print_element_names(xmlNode * a_node) { xmlNode *cur_node = NULL; for (cur_node = a_node; cur_node; cur_node = cur_node->next) { if (cur_node->type == XML_ELEMENT_NODE) { printf("node type: Element, name: %s\n", cur_node->name); } print_element_names(cur_node->children); } }