/ libxml2 / doc / tutorial / includeaddattribute.c
includeaddattribute.c
 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  
 9  xmlDocPtr
10  parseDoc(char *docname, char *uri) {
11  
12  	xmlDocPtr doc;
13  	xmlNodePtr cur;
14  	xmlNodePtr newnode;
15  	xmlAttrPtr newattr;
16  
17  	doc = xmlParseFile(docname);
18  	
19  	if (doc == NULL ) {
20  		fprintf(stderr,"Document not parsed successfully. \n");
21  		return (NULL);
22  	}
23  	
24  	cur = xmlDocGetRootElement(doc);
25  	
26  	if (cur == NULL) {
27  		fprintf(stderr,"empty document\n");
28  		xmlFreeDoc(doc);
29  		return (NULL);
30  	}
31  	
32  	if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
33  		fprintf(stderr,"document of the wrong type, root node != story");
34  		xmlFreeDoc(doc);
35  		return (NULL);
36  	}
37  	
38  	newnode = xmlNewTextChild (cur, NULL, "reference", NULL);
39  	newattr = xmlNewProp (newnode, "uri", uri);
40  	return(doc);
41  }
42  
43  int
44  main(int argc, char **argv) {
45  
46  	char *docname;
47  	char *uri;
48  	xmlDocPtr doc;
49  
50  	if (argc <= 2) {
51  		printf("Usage: %s docname, uri\n", argv[0]);
52  		return(0);
53  	}
54  
55  	docname = argv[1];
56  	uri = argv[2];
57  	doc = parseDoc (docname, uri);
58  	if (doc != NULL) {
59  		xmlSaveFormatFile (docname, doc, 1);
60  		xmlFreeDoc(doc);
61  	}
62  	return (1);
63  }
64  ]]>