Hi All,

I am using AXIS2C version 1.6.0 on an X86 64-bit  Redhat machine. I use soapUI 
for sending requests and AXIS2C receives newlines and spaces in the request 
which I cannot control from the request part.

For example, My soapUI request looks like:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:typ="http://ws.apache.org/axis2/services/Calculator/types";>
   <soapenv:Header/>
   <soapenv:Body>
      <typ:add xmlns:typ = 'http://example.com/add/2010/11/policy'>
        <param_1>11</param_1>
        <param_2>22</param_2>
      </typ:add>
   </soapenv:Body>
</soapenv:Envelope>

Here, axiom_node_to_string() function for <add> node yields  "<typ:add 
xmlns:typ = 'http://example.com/add/2010/11/policy'>\n        
<param_1>11</param_1>\n        <param_2>22</param_2>\n      </typ:add>"
I thought I will first convert this node to a buffer (addBuf); then I will 
process this buffer to remove newlines; and then I will pass the processed 
buffer to axiom_xml_reader_create_for_memory().

So the sequence of my calls is:

reader = axiom_xml_reader_create_for_memory(env,  (void*)addBuf, 
axutil_strlen(addBuf), "utf-8", AXIS2_XML_PARSER_TYPE_BUFFER);
builder = axiom_stax_builder_create(env, reader);
document = axiom_stax_builder_get_document(builder, env);
processedAddNode = axiom_document_get_root_element(document, env);

My observations:

1.       CASE1: addBuf is passed as it is (with newlines and spaces) to 
axiom_xml_reader_create_for_memory. The call to 
axiom_xml_reader_create_for_memory() is successful; but the processedAddNode 
does not have <param_1> and <param_2> tags.



2.       CASE2: Before calling axiom_xml_reader_create_for_memory, I process 
addBuf just to remove newlines. addBuf looks like "<typ:add xmlns:typ = 
'http://example.com/add/2010/11/policy'>        <param_1>11</param_1>        
<param_2>22</param_2>      </typ:add>". The spaces that existed after the 
newlines, still remain there. Here also, the call to 
axiom_xml_reader_create_for_memory() is successful; but the processedAddNode 
does not have <param_1> and <param_2> tags.



3.       CASE3: I hardcoded addBuf to "<typ:add xmlns:typ = 
'http://example.com/add/2010/11/policy'><param_1>11</param_1><param_2>22</param_2></typ:add>".
  Note that the newlines are removed and spaces after the newlines were also 
removed. This time call to axiom_xml_reader_create_for_memory() was successful. 
processedAddNode was perfect.

So, if there are any spaces after the ending tags, AXIOM does not seem to 
handle them very well. Of course, I can process the buffer to remove these 
obsolete spaces as well, but I have a gut feeling that AXIOM must have some 
efficient mechanism, which I am not aware of as of now, to handle this 
situation.

I would be really thankful if you could provide me any ideas on implementing 
better mechanisms for this.

Best Regards,
Pankaj Kharwal
Stockholm, Sweden

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________

Reply via email to