Annotation of embedaddon/libxml2/doc/tutorial/includeaddkeyword.c, revision 1.1.1.1
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, char *keyword) {
10:
11: xmlNewTextChild (cur, NULL, "keyword", keyword);
12: return;
13: }
14:
15: xmlDocPtr
16: parseDoc(char *docname, char *keyword) {
17:
18: xmlDocPtr doc;
19: xmlNodePtr cur;
20:
21: doc = xmlParseFile(docname);
22:
23: if (doc == NULL ) {
24: fprintf(stderr,"Document not parsed successfully. \n");
25: return (NULL);
26: }
27:
28: cur = xmlDocGetRootElement(doc);
29:
30: if (cur == NULL) {
31: fprintf(stderr,"empty document\n");
32: xmlFreeDoc(doc);
33: return (NULL);
34: }
35:
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);
40: }
41:
42: cur = cur->xmlChildrenNode;
43: while (cur != NULL) {
44: if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
45: parseStory (doc, cur, keyword);
46: }
47:
48: cur = cur->next;
49: }
50: return(doc);
51: }
52:
53: int
54: main(int argc, char **argv) {
55:
56: char *docname;
57: char *keyword;
58: xmlDocPtr doc;
59:
60: if (argc <= 2) {
61: printf("Usage: %s docname, keyword\n", argv[0]);
62: return(0);
63: }
64:
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);
71: }
72:
73: return (1);
74: }
75: ]]>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>