You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by tom ONeill <be...@hotmail.com> on 2004/01/06 15:05:34 UTC

XML within string parameter to RPC Service

Hi all,
I am going to be using Axis to invoke an RPC style web service which takes a 
single string parameter. This string parameter is going to contain an XML 
message. What I am wondering is if I need to wrap this String in a CDATA 
section before I invoke the web service?

>From reading the XML specification it says that character data consists of 
any text that does not contain markup. However my string value will contain 
markup. I have tested invoking the web service without wrapping my String in 
a CDATA section and have found that Axis has changed all the markup 
characters into their respective entity references (i.e. < has become < ). 
What Im wondering is why Axis is doing this? Im not sure how it creates its 
SOAP messages but from a brief glance of the code I guess it uses DOM 
(rather than plain String manipulation ). From looking at the DOM API it 
does not mention anything about the createTextNode method parsing the text 
content and expanding markup to use entity references?

Any recommendations or pointers as to what should influence whether the text 
should be wrapped in a CDATA section would help....

Cheers,
Tom

_________________________________________________________________
The new MSN 8: advanced junk mail protection and 2 months FREE* 
http://join.msn.com/?page=features/junkmail


RE: XML within string parameter to RPC Service

Posted by Richard Martin <rm...@essex.ac.uk>.
Hi tom,

Comments inline:

>Hi all,
>I am going to be using Axis to invoke an RPC style web service which takes
>a single string parameter. This string parameter is going to contain an XML

> message. What I am wondering is if I need to wrap this String in a CDATA 
> section before I invoke the web service?

You don't need to wrap it. Technically if you are passing XML then RPC isn't
the best way to go - a message based service would be better if you can
stand using org.w3c.dom classes.

>>From reading the XML specification it says that character data consists of 
>any text that does not contain markup. However my string value will contain

>markup. I have tested invoking the web service without wrapping my String
>in a CDATA section and have found that Axis has changed all the markup 
>characters into their respective entity references (i.e. < has become &gt;)

AXIS has to remove all of the restricted characters in XML ( <, >, and & )
and put entity references or it will break the XML parsers in both the
client and server. To my knowledge however, these references are
automagically replaced by axis before invoking the web service - so if you
are invoking a web service with a String argument containing XML, it
shouldn't contain any entity references. 

Regards, 

Richard