void cg_xml_node_addchildnode(CgXmlNode *node, CgXmlNode *cnode) { cg_log_debug_l4("Entering...\n"); cg_xml_nodelist_add(node->nodeList, cnode); cg_xml_node_setparentnode(cnode, node); cg_log_debug_l4("Leaving...\n"); }
void cg_upnp_control_soap_request_initializeenvelopenode(CgSoapRequest *soapReq) { CgXmlNodeList *rootNodeList; CgHttpRequest *httpReq; cg_log_debug_l4("Entering...\n"); rootNodeList = cg_soap_request_getrootnoodelist(soapReq); cg_xml_nodelist_add(rootNodeList, cg_soap_createenvelopebodynode()); httpReq = cg_soap_request_gethttprequest(soapReq); cg_http_request_setcontenttype(httpReq, CG_SOAP_CONTENT_TYPE); cg_log_debug_l4("Leaving...\n"); }
BOOL cg_xml_parse(CgXmlParser *parser, CgXmlNodeList *nodeList, const char *data, size_t len) { #if defined DEBUG_XML_RESULT CgString* resdata = NULL; #endif XML_Parser p; CgExpatData expatData; #ifdef CG_SHOW_TIMINGS struct timeval start_time, end_time, elapsed_time; #endif cg_log_debug_l4("Entering...\n"); #ifdef CG_SHOW_TIMINGS gettimeofday(&start_time, NULL); #endif if (!data || len <= 0) return FALSE; p = XML_ParserCreate(NULL); if (!p) return FALSE; /* Fix to get expat parser to work with DLink-routers */ if (data[len-1] == 0) len--; expatData.rootNode = NULL; expatData.currNode = NULL; XML_SetUserData(p, &expatData); XML_SetElementHandler(p, cg_expat_element_start, cg_expat_element_end); XML_SetCharacterDataHandler(p, cg_expat_character_data); parser->parseResult = XML_Parse(p, data, len, 1); XML_ParserFree(p); if (parser->parseResult == 0 /*XML_STATUS_ERROR*/) { if (expatData.rootNode != NULL) cg_xml_node_delete(expatData.rootNode); #if defined DEBUG_XML_RESULT resdata = cg_string_new(); cg_string_naddvalue(resdata,data,len); printf("XML parse Error on data %s\n time used = %ds\n", cg_string_getvalue(resdata), time(NULL)-startTime); cg_string_delete(resdata); #endif return FALSE; } cg_xml_nodelist_add(nodeList, expatData.rootNode); #ifdef CG_SHOW_TIMINGS gettimeofday(&end_time, NULL); timersub(&end_time, &start_time, &elapsed_time); cg_log_debug_s("Parsing XML completed. Elapsed time: " "%ld msec\n", ((elapsed_time.tv_sec*1000) + (elapsed_time.tv_usec/1000))); cg_total_elapsed_time += (elapsed_time.tv_sec*1000000)+ (elapsed_time.tv_usec); cg_log_debug_s("Total elapsed time: %ld msec\n", cg_total_elapsed_time / 1000); #endif #if defined DEBUG_XML_RESULT resdata = cg_string_new(); cg_string_naddvalue(resdata,data,len); printf("XML parse success - time used %ds\n",time(NULL)-startTime); cg_string_delete(resdata); #endif return TRUE; cg_log_debug_l4("Leaving...\n"); }