From 35a201cc8ef0c3f5b2df88d2e528aabee1048348 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 18:47:09 +0200 Subject: Initial/Final commit --- libxml2-2.9.10/doc/examples/tree1.c | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 libxml2-2.9.10/doc/examples/tree1.c (limited to 'libxml2-2.9.10/doc/examples/tree1.c') diff --git a/libxml2-2.9.10/doc/examples/tree1.c b/libxml2-2.9.10/doc/examples/tree1.c new file mode 100644 index 0000000..e6faefc --- /dev/null +++ b/libxml2-2.9.10/doc/examples/tree1.c @@ -0,0 +1,94 @@ +/** + * section: Tree + * synopsis: Navigates a tree to print element names + * purpose: Parse a file to a tree, use xmlDocGetRootElement() to + * get the root element, then walk the document and print + * all the element name in document order. + * usage: tree1 filename_or_URL + * test: tree1 test2.xml > tree1.tmp && diff tree1.tmp $(srcdir)/tree1.res + * author: Dodji Seketeli + * copy: see Copyright for the status of this software. + */ +#include +#include +#include + +#ifdef LIBXML_TREE_ENABLED + +/* + *To compile this file using gcc you can type + *gcc `xml2-config --cflags --libs` -o xmlexample libxml2-example.c + */ + +/** + * print_element_names: + * @a_node: the initial xml node to consider. + * + * Prints the names of the all the xml elements + * that are siblings or children of a given xml node. + */ +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); + } +} + + +/** + * Simple example to parse a file called "file.xml", + * walk down the DOM, and print the name of the + * xml elements nodes. + */ +int +main(int argc, char **argv) +{ + xmlDoc *doc = NULL; + xmlNode *root_element = NULL; + + if (argc != 2) + return(1); + + /* + * this initialize the library and check potential ABI mismatches + * between the version it was compiled for and the actual shared + * library used. + */ + LIBXML_TEST_VERSION + + /*parse the file and get the DOM */ + doc = xmlReadFile(argv[1], NULL, 0); + + if (doc == NULL) { + printf("error: could not parse file %s\n", argv[1]); + } + + /*Get the root element node */ + root_element = xmlDocGetRootElement(doc); + + print_element_names(root_element); + + /*free the document */ + xmlFreeDoc(doc); + + /* + *Free the global variables that may + *have been allocated by the parser. + */ + xmlCleanupParser(); + + return 0; +} +#else +int main(void) { + fprintf(stderr, "Tree support not compiled in\n"); + exit(1); +} +#endif -- cgit v1.2.3