| Код | /* * (c) Oleg Puchinin 2006 * graycardinalster@gmail.com * */
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <libxml/parser.h> #include <libxml/tree.h>
static void print_element_names(xmlNode * a_node, int n) { int i; xmlNode *cur_node = NULL; for (cur_node = a_node; cur_node; cur_node = cur_node->next) { for (i = 0; i < n; ++i) fputc ('\t', stdout);
if (cur_node->type == XML_ELEMENT_NODE) printf("%s", cur_node->name); if (cur_node->type == XML_TEXT_NODE) printf ("%s", cur_node->content); printf ("\n"); print_element_names(cur_node->children, n+1); } }
int main (int argc, char ** argv) { xmlDocPtr doc; xmlNodePtr tree, subtree, root_element;
root_element = NULL;
doc = xmlNewDoc((const xmlChar*) "1.0"); doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*) "EXAMPLE", NULL); xmlSetProp(doc->children, (const xmlChar*) "prop1", (const xmlChar*) "gnome is great"); xmlSetProp(doc->children, (const xmlChar*) "prop2", (const xmlChar*) "& linux too"); tree = xmlNewChild(doc->children, NULL, (const xmlChar*) "head", NULL); subtree = xmlNewChild(tree, NULL, (const xmlChar*) "title", (const xmlChar*) "Welcome to Gnome"); tree = xmlNewChild(doc->children, NULL, (const xmlChar*) "chapter", NULL); subtree = xmlNewChild(tree, NULL, (const xmlChar*) "title", (const xmlChar*) "The Linux adventure"); subtree = xmlNewChild(tree, NULL, (const xmlChar*) "p", (const xmlChar*) "bla bla bla ..."); subtree = xmlNewChild(tree, NULL, (const xmlChar*) "image", NULL); xmlSetProp(subtree, (const xmlChar*) "href", (const xmlChar*) "linus.gif"); xmlSaveFile("my.xml", doc); xmlFreeDoc(doc); doc = xmlReadFile("my.xml", NULL, 0); if (doc == NULL) { printf("error: could not parse file %s\n", "my.xml"); return EXIT_FAILURE; } root_element = xmlDocGetRootElement(doc); print_element_names(root_element, 0); xmlFreeDoc(doc); xmlCleanupParser();
return EXIT_SUCCESS; }
|
Создаст xml файло, сохранит, загрузит и распарсит. помнится надо -lxml и все Да, я код только модифицировал под свои нужды. Вообще в libxml2 сэмпл очень хороший. |