Hi All,

Can please someone provide an example of how to retrieve values from POST xml 

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?
<note urgency="important">
<body>Don't forget me this weekend!</body>
<note1 urgency="urgent">
<body>Give me a call.</body>

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 :)

Reply via email to