Return to includeconvert.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / doc / tutorial |
1.1 ! misho 1: <![CDATA[ ! 2: #include <string.h> ! 3: #include <libxml/parser.h> ! 4: ! 5: ! 6: unsigned char* ! 7: convert (unsigned char *in, char *encoding) ! 8: { ! 9: unsigned char *out; ! 10: int ret,size,out_size,temp; ! 11: xmlCharEncodingHandlerPtr handler; ! 12: ! 13: size = (int)strlen(in)+1; ! 14: out_size = size*2-1; ! 15: out = malloc((size_t)out_size); ! 16: ! 17: if (out) { ! 18: handler = xmlFindCharEncodingHandler(encoding); ! 19: ! 20: if (!handler) { ! 21: free(out); ! 22: out = NULL; ! 23: } ! 24: } ! 25: if (out) { ! 26: temp=size-1; ! 27: ret = handler->input(out, &out_size, in, &temp); ! 28: if (ret || temp-size+1) { ! 29: if (ret) { ! 30: printf("conversion wasn't successful.\n"); ! 31: } else { ! 32: printf("conversion wasn't successful. converted: %i octets.\n",temp); ! 33: } ! 34: free(out); ! 35: out = NULL; ! 36: } else { ! 37: out = realloc(out,out_size+1); ! 38: out[out_size]=0; /*null terminating out*/ ! 39: ! 40: } ! 41: } else { ! 42: printf("no mem\n"); ! 43: } ! 44: return (out); ! 45: } ! 46: ! 47: ! 48: int ! 49: main(int argc, char **argv) { ! 50: ! 51: unsigned char *content, *out; ! 52: xmlDocPtr doc; ! 53: xmlNodePtr rootnode; ! 54: char *encoding = "ISO-8859-1"; ! 55: ! 56: ! 57: if (argc <= 1) { ! 58: printf("Usage: %s content\n", argv[0]); ! 59: return(0); ! 60: } ! 61: ! 62: content = argv[1]; ! 63: ! 64: out = convert(content, encoding); ! 65: ! 66: doc = xmlNewDoc ("1.0"); ! 67: rootnode = xmlNewDocNode(doc, NULL, (const xmlChar*)"root", out); ! 68: xmlDocSetRootElement(doc, rootnode); ! 69: ! 70: xmlSaveFormatFileEnc("-", doc, encoding, 1); ! 71: return (1); ! 72: } ! 73: ]]>