libxml2 2.9.1 clean sources
[tomato.git] / release / src / router / libxml2 / doc / tutorial / includeaddkeyword.c
blob975168d70a213e15cb66f96296b0f2d697e155c3
1 <![CDATA[
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <libxml/xmlmemory.h>
6 #include <libxml/parser.h>
8 void
9 parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) {
11 xmlNewTextChild (cur, NULL, "keyword", keyword);
12 return;
15 xmlDocPtr
16 parseDoc(char *docname, char *keyword) {
18 xmlDocPtr doc;
19 xmlNodePtr cur;
21 doc = xmlParseFile(docname);
23 if (doc == NULL ) {
24 fprintf(stderr,"Document not parsed successfully. \n");
25 return (NULL);
28 cur = xmlDocGetRootElement(doc);
30 if (cur == NULL) {
31 fprintf(stderr,"empty document\n");
32 xmlFreeDoc(doc);
33 return (NULL);
36 if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
37 fprintf(stderr,"document of the wrong type, root node != story");
38 xmlFreeDoc(doc);
39 return (NULL);
42 cur = cur->xmlChildrenNode;
43 while (cur != NULL) {
44 if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
45 parseStory (doc, cur, keyword);
48 cur = cur->next;
50 return(doc);
53 int
54 main(int argc, char **argv) {
56 char *docname;
57 char *keyword;
58 xmlDocPtr doc;
60 if (argc <= 2) {
61 printf("Usage: %s docname, keyword\n", argv[0]);
62 return(0);
65 docname = argv[1];
66 keyword = argv[2];
67 doc = parseDoc (docname, keyword);
68 if (doc != NULL) {
69 xmlSaveFormatFile (docname, doc, 0);
70 xmlFreeDoc(doc);
73 return (1);
75 ]]>