Return to includekeyword.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / doc / tutorial |
1.1 ! misho 1: <![CDATA[ ! 2: #include <stdio.h> ! 3: #include <string.h> ! 4: #include <stdlib.h> ! 5: #include <libxml/xmlmemory.h> ! 6: #include <libxml/parser.h> ! 7: ! 8: void ! 9: parseStory (xmlDocPtr doc, xmlNodePtr cur) { ! 10: ! 11: xmlChar *key; ! 12: cur = cur->xmlChildrenNode; ! 13: while (cur != NULL) { ! 14: if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) { ! 15: key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); ! 16: printf("keyword: %s\n", key); ! 17: xmlFree(key); ! 18: } ! 19: cur = cur->next; ! 20: } ! 21: return; ! 22: } ! 23: ! 24: static void ! 25: parseDoc(char *docname) { ! 26: ! 27: xmlDocPtr doc; ! 28: xmlNodePtr cur; ! 29: ! 30: doc = xmlParseFile(docname); ! 31: ! 32: if (doc == NULL ) { ! 33: fprintf(stderr,"Document not parsed successfully. \n"); ! 34: return; ! 35: } ! 36: ! 37: cur = xmlDocGetRootElement(doc); ! 38: ! 39: if (cur == NULL) { ! 40: fprintf(stderr,"empty document\n"); ! 41: xmlFreeDoc(doc); ! 42: return; ! 43: } ! 44: ! 45: if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { ! 46: fprintf(stderr,"document of the wrong type, root node != story"); ! 47: xmlFreeDoc(doc); ! 48: return; ! 49: } ! 50: ! 51: cur = cur->xmlChildrenNode; ! 52: while (cur != NULL) { ! 53: if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){ ! 54: parseStory (doc, cur); ! 55: } ! 56: ! 57: cur = cur->next; ! 58: } ! 59: ! 60: xmlFreeDoc(doc); ! 61: return; ! 62: } ! 63: ! 64: int ! 65: main(int argc, char **argv) { ! 66: ! 67: char *docname; ! 68: ! 69: if (argc <= 1) { ! 70: printf("Usage: %s docname\n", argv[0]); ! 71: return(0); ! 72: } ! 73: ! 74: docname = argv[1]; ! 75: parseDoc (docname); ! 76: ! 77: return (1); ! 78: } ! 79: ]]>