blob: 200319a07d30e1ba80c360e1815ebce73e96132e [file] [log] [blame]
MST 2004 John Fleckd14bccc2004-02-15 01:57:42 +00001<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>E. Code for Add Keyword Example</title><meta name="generator" content="DocBook XSL Stylesheets V1.61.2"><link rel="home" href="index.html" title="Libxml Tutorial"><link rel="up" href="index.html" title="Libxml Tutorial"><link rel="previous" href="apd.html" title="D. Code for XPath Example"><link rel="next" href="apf.html" title="F. Code for Add Attribute Example"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">E. Code for Add Keyword Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apd.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="apf.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="addkeywordappendix"></a>E. Code for Add Keyword Example</h2></div></div><div></div></div><p>
MST 2003 John Fleck731967e2003-01-27 00:39:50 +00002 </p><pre class="programlisting">
MDT 2002 John Fleck54520832002-06-13 03:30:26 +00003#include &lt;stdio.h&gt;
4#include &lt;string.h&gt;
5#include &lt;stdlib.h&gt;
6#include &lt;libxml/xmlmemory.h&gt;
7#include &lt;libxml/parser.h&gt;
8
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +00009void
10parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) {
11
12 xmlNewTextChild (cur, NULL, "keyword", keyword);
13 return;
14}
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000015
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000016xmlDocPtr
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000017parseDoc(char *docname, char *keyword) {
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000018
19 xmlDocPtr doc;
20 xmlNodePtr cur;
21
22 doc = xmlParseFile(docname);
23
24 if (doc == NULL ) {
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000025 fprintf(stderr,"Document not parsed successfully. \n");
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000026 return (NULL);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000027 }
28
29 cur = xmlDocGetRootElement(doc);
30
31 if (cur == NULL) {
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000032 fprintf(stderr,"empty document\n");
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000033 xmlFreeDoc(doc);
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000034 return (NULL);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000035 }
36
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000037 if (xmlStrcmp(cur-&gt;name, (const xmlChar *) "story")) {
38 fprintf(stderr,"document of the wrong type, root node != story");
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000039 xmlFreeDoc(doc);
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000040 return (NULL);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000041 }
42
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000043 cur = cur-&gt;xmlChildrenNode;
44 while (cur != NULL) {
45 if ((!xmlStrcmp(cur-&gt;name, (const xmlChar *)"storyinfo"))){
46 parseStory (doc, cur, keyword);
47 }
48
49 cur = cur-&gt;next;
50 }
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000051 return(doc);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000052}
53
54int
55main(int argc, char **argv) {
56
57 char *docname;
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000058 char *keyword;
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000059 xmlDocPtr doc;
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000060
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000061 if (argc &lt;= 2) {
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000062 printf("Usage: %s docname, keyword\n", argv[0]);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000063 return(0);
64 }
65
66 docname = argv[1];
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000067 keyword = argv[2];
68 doc = parseDoc (docname, keyword);
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000069 if (doc != NULL) {
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000070 xmlSaveFormatFile (docname, doc, 0);
MDT 2003 John Fleck8aff3b72003-04-26 03:54:07 +000071 xmlFreeDoc(doc);
72 }
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000073
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000074 return (1);
75}
76
MST 2003 John Fleck731967e2003-01-27 00:39:50 +000077</pre><p>
MDT 2003 John Fleck63f3a472003-07-24 21:48:30 +000078 </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apd.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="apf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">D. Code for XPath Example </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> F. Code for Add Attribute Example</td></tr></table></div></body></html>