Hi All, Can please someone provide an example of how to retrieve values from POST xml data. I use ap_xml_parse_input() to get and parse XML POST.
At the moment I can retrieve everything, including elements, attributes, cdata, but the actual string values. How should I retrieve the values of “Tove”, “Jani”, “Reminder”, etc? <xml> <note urgency="important"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> <note1 urgency="urgent"> <to>Rose</to> <from>Smith</from> <heading>Reminder</heading> <body>Give me a call.</body> </note1> </xml> Here is a small code snippet: static int example_handler(request_rec *r) { apr_xml_doc *xmlData; ap_rprintf(r, "Hello\n"); xmlData = readPost(r); ap_rprintf(r, "Read POST...\n"); if (xmlData) { ap_rprintf(r, "xmlData != NULL\n XML POST read successfully...\n"); ap_rprintf(r, "Root Element == %s\n", xmlData->root->name); ap_rprintf(r, "Root First child = %s\n", xmlData->root->first_child->name); ap_rprintf(r, "Root Last child = %s\n", xmlData->root->last_child->name); ap_rprintf(r, "Root Next = %s\n", xmlData->root->first_child->next->name); ap_rprintf(r, "ATTR_VAL = %s\n", xmlData->root->first_child->next->attr->value); ap_rprintf(r, "private = %s\n", (char*)xmlData->root->first_child->next->priv); ap_rprintf(r, "NALLOC = %i\n", xmlData->namespaces->nalloc); ap_rprintf(r, "NELTS = %i\n", xmlData->namespaces->nelts); ap_rprintf(r, "ELTS = %s\n", xmlData->namespaces->elts); } Return OK; } apr_xml_doc* readPost(request_rec *r) { apr_array_header_t *pairs = NULL; apr_xml_doc* pdoc = NULL; apr_off_t len; apr_size_t size; int res; int i = 0; char *buffer; res = ap_xml_parse_input(r, &pdoc); if (res != OK || !pdoc) {ap_rprintf(r, "res = %i\n", res); ap_rprintf(r, "Failed...\n"); return NULL;} /* Return NULL if we failed or if there are is no POST data */ return pdoc; } Thank you J |