kal_int32 xml_generate_converted_data(XG_HANDLE hd, kal_char *text, kal_int32 textlen) { kal_int32 ret, i, len; xml_generator_struct *p = NULL; /* first check if parameters are correct */ if ((hd < 0) || (hd >= XG_MAX_HANDLE_NUM)) { return XG_E_HANDLE; } p = &(xg_array[hd]); len = 0; while(i = xml_generate_convert_named_char(p, &text, textlen)) { textlen -= i; if((ret = xml_generate_data(hd, p->convertbuf, p->convertlen)) < 0) { return ret; } len += i; } return len; }
void test_xmlgen(void) { XG_HANDLE hd; xg_attr_struct attrlist[2]; char *data = NULL, *dtd=NULL; kal_wchar resultname[128]; int ret, len, driver; driver = FS_GetDrive(FS_DRIVE_V_NORMAL, 1, FS_DRIVE_I_SYSTEM); csd_wsprintf((kal_uint16*)resultname, "%c:\\xmlsample.txt",driver); hd = xml_new_generator((kal_char*)resultname, 0); xml_generate_xmldecl(hd, 0, XML_ENCODING_UTF8); xml_generate_doctypedecl(hd, "bookshop", XG_DOCTYPE_SYSTEM, "bookshop.dtd"); dtd = "<!ELEMENT greeting (#PCDATA)>"; len = strlen(dtd); // xml_generate_doctypedecl_ex(hd, "bookshop", dtd, len); ret = xml_generate_stag(hd, "bookshop", NULL, 0); /* to generate: <bookshop> */ /* to generate: <book1>this is a book of computer</book1> */ data = "test data"; ret = xml_generate_inline_element(hd, "book1", data, strlen(data)); ret = xml_generate_stag(hd, "contact", NULL, 0); /* to generate: <address street="Xi Dan Street"/> */ attrlist[0].attrname = "street"; attrlist[0].attrvalue = "Xi Dan Street"; attrlist[1].attrname = "code"; attrlist[1].attrvalue = "100022"; ret = xml_generate_empty_element(hd, "address", attrlist, 2); /* to generate: <email>[![CDATA[[email protected]]]></email> */ ret = xml_generate_stag(hd, "email", NULL, 0); data = " [email protected]"; ret = xml_generate_cdata(hd, data, strlen(data)); ret = xml_generate_etag(hd, "email"); ret = xml_generate_stag(hd, "msn", NULL, 0); data = "*****@*****.**"; ret = xml_generate_data(hd, data, strlen(data)); ret = xml_generate_etag(hd, "msn"); /* to generate: </contact> */ ret = xml_generate_etag(hd, "contact"); /* to generate: </sample> */ ret = xml_generate_etag(hd, "bookshop"); xml_close_generator(hd); }