blob: b2b7471102d799e38f5f1b07a14ea73ed457f813 [file] [log] [blame]
MDT 2002 John Fleck54520832002-06-13 03:30:26 +00001<![CDATA[
2#include <stdio.h>
3#include <string.h>
4#include <stdlib.h>
5#include <libxml/xmlmemory.h>
6#include <libxml/parser.h>
7
8void
9getReference (xmlDocPtr doc, xmlNodePtr cur) {
10
MST 2002 John Fleck44aacb32002-12-16 04:34:57 +000011 xmlChar *uri;
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000012 cur = cur->xmlChildrenNode;
13 while (cur != NULL) {
14 if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) {
MST 2002 John Fleck44aacb32002-12-16 04:34:57 +000015 uri = xmlGetProp(cur, "uri");
16 printf("uri: %s\n", uri);
17 xmlFree(uri);
18 }
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000019 cur = cur->next;
20 }
MST 2002 John Fleck44aacb32002-12-16 04:34:57 +000021 return;
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000022}
23
24
25void
26parseDoc(char *docname) {
27
28 xmlDocPtr doc;
29 xmlNodePtr cur;
30
31 doc = xmlParseFile(docname);
32
33 if (doc == NULL ) {
34 fprintf(stderr,"Document not parsed successfully. \n");
35 return;
36 }
37
38 cur = xmlDocGetRootElement(doc);
39
40 if (cur == NULL) {
41 fprintf(stderr,"empty document\n");
42 xmlFreeDoc(doc);
43 return;
44 }
45
46 if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
47 fprintf(stderr,"document of the wrong type, root node != story");
48 xmlFreeDoc(doc);
49 return;
50 }
51
52 getReference (doc, cur);
MDT 2002 John Fleck77e4d352002-09-01 01:37:11 +000053 xmlFreeDoc(doc);
MDT 2002 John Fleck54520832002-06-13 03:30:26 +000054 return;
55}
56
57int
58main(int argc, char **argv) {
59
60 char *docname;
61
62 if (argc <= 1) {
63 printf("Usage: %s docname\n", argv[0]);
64 return(0);
65 }
66
67 docname = argv[1];
68 parseDoc (docname);
69
70 return (1);
71}
72]]>