My point is that the character reference 0x03 is not valid XML,
regardless of whether its a raw byte or &3; both are illegal xml. The
only encoding you can do to transport that string is to base64 encode
it.

Cheers
Simon


On Tue, 31 May 2005 23:48:52 +0200 (CEST), in soap you wrote:

>     [ 
> http://issues.apache.org/jira/browse/AXIS-2025?page=comments#action_66676 ]
>     
>Shankar Unni commented on AXIS-2025:
>------------------------------------
>
>Regarding Simon's comment: yes, 0x3 is not a valid XML character. That's 
>exactly the point. The original *String* argument in the *Java* code had a 
>0x3. 
>
>The bug is that Axis is dumping that naked 0x3 on the wire as part of the text 
>data in XML without escaping it, as in:
>
>  <badmsgReturn xsi:type="xsd:string">bad: .</badmsgReturn>
>
>The whole point of using an RPC library is to have it take *any legal Java 
>String* in the API if the argument type says "String", and arrange to have it 
>delivered on the other side intact. Not just Strings that contain valid XML 
>characters.
>
>
>> Illegal XML characters in String arguments and return values cause XML 
>> exceptions in Axis calls
>> -----------------------------------------------------------------------------------------------
>>
>>          Key: AXIS-2025
>>          URL: http://issues.apache.org/jira/browse/AXIS-2025
>>      Project: Axis
>>         Type: Bug
>>   Components: Serialization/Deserialization
>>     Versions: 1.2
>>  Environment: All (but reproduced on WinXP).
>> Axis 1.1 and 1.2
>>     Reporter: Shankar Unni
>
>>
>> Arguments and return values of Java type String are incorrectly handled if 
>> they contain non-printing illegal ASCII characters.
>> Example 1: bad return values:
>> - - - - - - - - - - - - - - -
>> E.g. the string 
>>   "bad char: " + (char)3 + "."
>> Trivial example:
>> foo.jws:
>>   public class foo {
>>     public String badmsg()
>>     {
>>       return "bad: " + (char)3 + ".";
>>     }
>>   }
>> When calling this method and the server is running on Axis 1.1, it returns 
>> XML with the illegal character ASCII "3" in the text:
>>    <badmsgReturn xsi:type="xsd:string">bad: 
.</badmsgReturn>  
>> This causes an XML parse exception on the client side 
>> ("org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was 
>> found in the element content of the document.")
>> With Axis 1.2, the server doesn't even return a valid response: I get an 
>> HTTP 200 OK with an empty content, causing a different XML parse error.
>> Example 2: bad parameter values:
>> - - - - - - - - - - - - - - - -
>> A similar problem exists when passing such a string from the the client side.
>> If I have a method in foo.jws:
>>   public class foo {
>>     public String echo(String s)
>>     {
>>       return s;
>>     }
>>   }
>> Then if I write an ordinary Java client to call this, and pass it a bad 
>> string as in the beginning of this post, I get an exception thrown while the 
>> call is being composed:
>> java.lang.IllegalArgumentException: The char '0x3' in 'bad char: ?.' is not 
>> a valid XML character.
>> This is somewhat absurd: shouldn't the serialization layer be encoding these 
>> illegal XML characters as entity escapes? They're entirely legal in the 
>> current locale (US), and normal Java code handles this character quite 
>> normally.  Why should it croak when passed by XML/RPC?

Reply via email to