axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lahiru Gunathilake <lah...@wso2.com>
Subject Re: Bug in axis2c xml parsing?
Date Thu, 18 Oct 2007 07:28:52 GMT
Hi Subra,

I've checked your code but it worked in both two types of xml's.Please
check your variables MY_NAMESPACE_PREFIX and MY_NAMESPACE_URI.You have
to give the appropriate prefix to get the child by the Qname.
This is my code:
 
 char* MY_NAMESPACE_URI = "http://x.com";
    char* MY_NAMESPACE_PREFIX = "ns1";
        document = axiom_stax_builder_get_document(builder,
environment);
axiom_node_t * rootNode = NULL;
    axiom_element_t* rootElement = NULL;
    rootNode = axiom_document_get_root_element(document, environment);


     axutil_qname_t *Qname = axutil_qname_create(environment, "Price",
MY_NAMESPACE_URI, MY_NAMESPACE_PREFIX);
    axiom_node_t *myNode = NULL;
   axiom_element_t *myElement = NULL;
    myElement = axiom_element_get_first_child_with_qname(rootElement,
environment, Qname, rootNode, &myNode);

    if (myNode)
    {
        printf("inside if");
        return AXIS2_SUCCESS;
    }
    else
    {
        AXIS2_LOG_DEBUG(environment->log, AXIS2_LOG_SI, "Error!!");
        printf("inside else");
        return AXIS2_FAILURE;
    }
---------------------------------- Here the xml file -------------------

<MyOperation xmlns:ns="http://x.com">
       <ns:Price/>
</MyOperation>
-----------------------------------------------------------------------

Regs
lahiru
On Thu, 2007-10-18 at 16:02 -0400, Subra A Narayanan wrote:
> Hello folks,
> 
> I use the following code to parse an incoming ws request. I am posting
> only snippets of the code for sake of brevity
> 
> ******************************************************************CODE
> BEGIN*************************************************************************** 
>     axutil_qname_t *Qname = axutil_qname_create(env, "Price",
> MY_NAMESPACE_URI, MY_NAMESPACE_PREFIX);
>     axiom_node_t *myNode = NULL;
>     axiom_element_t *myElement = NULL;
>     myElement = axiom_element_get_first_child_with_qname(rootElement,
> env, Qname, rootNode, &myNode); 
> 
>     if (myNode)
>     {
>         ...................................
>         ...................................
>         ...................................
>         return AXIS2_SUCCESS;
>     }
>     else 
>     {
>         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Error!!");
>         return AXIS2_FAILURE;
>     }
> 
> ******************************************************************CODE
> END************************************************************************** 
> 
> If I have a node like this, it just works fine (here 'MyOperation' is
> the root node from above)
> 
> <MyOperation>
>        <Price>250</Price>
> </MyOperation>
> 
> 
> but if I have a node like this
> 
> <MyOperation>
>        <ns:Price />
> </MyOperation>
> 
> the control goes in to the else condition and it returns AXIS2_FAILURE
> 
> I would think this shouldn't be happening since we do have a 'Price'
> node although it is empty.
> 
> Is this by design or have I found a bug? 
> 
> 
> Thanks,
> Subra


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Mime
View raw message