From: "Chris Nappin" <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: <[email protected]>
Subject: RE: xml with strange characters
Date: Wed, 31 Aug 2005 10:30:43 +0100
Looks like you're using a mixture of RPC and doc/literal? You might have a
very good reason for doing this, but "normal" doc/literal should look more
like this (with your data as a nested XML document, rather than a "String"
RPC argument):
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getListResponse xmlns="">
<getListReturn>
<ROOT>
<RECORD>
<id>1</id><id>1</id>
..etc..
</RECORD>
</ROOT>
</getListReturn>
</getListResponse>
</soapenv:Body>
</soapenv:Envelope>
This can be done by creating a web service that has a "getListResponse"
bean object (I recommend writing your WSDL first and getting Axis to
generate the beans for you), or by using the Axis message style which gives
you access to the raw XML (see user guide for more details).
Note that your encoded document goes a bit wrong around the first closing
"contacted" tag:
<contactid>20</contactid&id>1</id>
is
<contacted>20</contactid&id>1</id>
which isn't valid XML and may have been caused by repeatedly encoding the
String parameter?
-----Original Message-----
From: Plorks mail [mailto:[EMAIL PROTECTED]
Sent: 31 August 2005 10:05
To: [email protected]
Subject: RE: xml with strange characters
I use document/literal sytle
looking at the soap using tcpmon it looks like this
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getListResponse xmlns="">
<getListReturn><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
<ROOT><RECORD><id>1</id><id>1</id><contactid>20</contactid&id>1</id><contactid>29</contactid><emailcount>2</emailcount><emailaddress>[EMAIL
PROTECTED]</emailaddress></RECORD></ROOT>
]]></getListReturn>
</getListResponse>
</soapenv:Body>
</soapenv:Envelope>
but when i retutn the result using call.invoke the xml is well formed
>From: "Chris Nappin" <[EMAIL PROTECTED]>
>Reply-To: [email protected]
>To: <[email protected]>
>Subject: RE: xml with strange characters
>Date: Wed, 31 Aug 2005 09:57:17 +0100
>
>You might be able to get away with that if you know your XML never
contains
>"]]".
>
>The "proper" way to pass XML in a web service is to use the
>"document/literal" style - have a look at the Axis User guide for further
>details.
>
>
>-----Original Message-----
>From: Plorks mail [mailto:[EMAIL PROTECTED]
>Sent: 31 August 2005 09:52
>To: [email protected]
>Subject: Re: xml with strange characters
>
>
>
>thanks - don't know whether you have heard of it, but we are uisng a
>product called laszlo and even though the xml i return is perfect when i
>write a java client to my web service when laszlo is used it escapes the
>angle brackets - we have now found out xml isn't supported!
>
>so now i have to re-write my ws
>
>i have this code which returns the xml
>
>StringWriter writer = new StringWriter();
>
>// create a resultsetbuilder to transform resultset to XML
>try
>{
>RecordsetToXML rsXML = new RecordsetToXML(rs, "ROOT", "RECORD");
>
>// create the XML from recordset
>Document jDOMDoc = rsXML.build();
>rs = null;
>XMLOutputter outputter = new XMLOutputter();
>outputter.output(jDOMDoc, writer);
>result = writer.toString();
>//System.out.print("XML " + writer);
>writer.close();
>}
>
>.......
>
>return result;
>
>
>So do i do this - [CDATA[writer.toString()]]
>
>
>when i'm testing i do String ret - (String) call.invoke(new
>Object[]{params}); as normal
>
>
>
>thanks for your help
>
>
>
>
>
>
> >From: Guy Rixon <[EMAIL PROTECTED]>
> >Reply-To: [email protected]
> >To: [email protected]
> >Subject: Re: xml with strange characters
> >Date: Wed, 31 Aug 2005 09:17:46 +0100 (BST)
> >
> >CDATA like this: instead of
> >
> > String s = "<someXmlStructure>...</someXmlStructure>";
> >
> >put
> >
> > String s = "<![CDATA[<someXmlStructure>...</someXmlStructure>]]>";
> >
> >in the string that you return from your service implementation. This
>makes
> >the
> >return message something like
> >
> ><soap:envelope>
> > <soap:body>
> > <xsd:string>
> > <![CDATA[<someXmlStructure>...</someXmlStructure>]]>
> > </xsd:string>
> > </soap:body>
> ></soap:envelope>
> >
> >
> >See
> >
> > http://www.w3schools.com/xml/xml_cdata.asp
> >
> >for more details and examples.
> >
> >However, doing it that way is against the spirit of SOAP. You should
>really
> >have your someXmlStructure directly in the body of the message:
> >
> ><soap:envelope>
> > <soap:body>
> > <someXmlStructure>...</someXmlStructure>
> > </soap:body>
> ></soap:envelope>
> >
> >If you mapped someXmlStructure to SomeJavaClass using WSDL2Java, then
you
> >could return an instance of SomeJavaClass from your service
>implementation
> >and
> >Axis would serialize it into the required XML. If you want to generate
>your
> >someXmlStructure as a DOM, then you might be able to get that
serialized;
> >check out the SAAJ spec. (Anybody have a succint example of returning a
>DOM
> >from a service implementation?) I don't think Axis has a way to accept
> >serialized XML from a service implementation; i.e. you can't write out
> >text-with-angle-brackets and have Axis include it literally in the
return
> >message, other than the XML-in-a-string trick that you've already
found.
> >
> >Cheers,
> >Guy
> >
> >
> >
> >On Wed, 31 Aug 2005, Plorks mail wrote:
> >
> > >
> > > hi
> > >
> > > i'm returning the xml as a result of call.invoke. when i write a
test
> > > client using java the xml is well frmed, however we are also usg an
> > > application called laszlo, but when you get the same xml using
laszlo
> >that's
> > > whe it comes back with the &alt for the angle brackets
> > >
> > > would it be possible to lead me to an example of cdata and sending
the
> >xml
> > > as the body of the message (i think this is what i'm doing but just
>want
> >to
> > > make sure)
> > >
> > > thanks for your help
> > >
> > >
> > > >From: Guy Rixon <[EMAIL PROTECTED]>
> > > >Reply-To: [email protected]
> > > >To: [email protected]
> > > >Subject: Re: xml with strange characters
> > > >Date: Tue, 30 Aug 2005 17:24:35 +0100 (BST)
> > > >
> > > >If I understand you correctly, you're putting data marked up as XML
>in
> >a
> > > >string and then sending that string as an XML element in a SOAP
> >message. In
> > > >this usage, Axis has to turn the angle brackets into entity
>references
> >in
> > > >order to make the XML well-formed; you're not allowed to have
literal
> >angle
> > > >brackets in the value of an XML element.
> > > >
> > > >If you desparately need to send your XML structure as the value of
> > > >some XML element, then you can wrap it in a CDATA section so that
>Axis
> >need
> > > >not mess
> > > >with the angle brackets. However, why not just send the XML as the
>body
> >of
> > > >the
> > > >message (normal document/literal style)?
> > > >
> > > >On Tue, 30 Aug 2005, Plorks mail wrote:
> > > > >
> > > > > it's not - when the client receives the xml it has &alt instead
of
><
> >or
> > > > >
> > > > >
> > > > > Also when i test my service get the same characters in the soap
> >message
> > > > >
> > > > > Thanks
> > > > >
> > > > >
> > > > >
> > > > > >From: WAJSBERG Julien RD-BIZZ
<[EMAIL PROTECTED]>
> > > > > >Reply-To: [email protected]
> > > > > >To: [email protected]
> > > > > >Subject: Re: xml with strange characters
> > > > > >Date: Tue, 30 Aug 2005 14:30:59 +0200
> > > > > >
> > > > > >Plorks mail a écrit :
> > > > > >
> > > > > > >
> > > > > > > hi all
> > > > > > >
> > > > > > > i'm retruning a xml string when a method is called.
> > > > > > >
> > > > > > > When i look at the soap returned xml is formatted with <
> > > >charactes
> > > > > > > instead of < or >
> > > > > > >
> > > > > > > e.g.
> > > > > > >
> > > > > > > <ROOT>
> > > > > > > ............
> > > > > > > </ROOT>
> > > > > > >
> > > > > > > can anyone help me to solve this
> > > > > > >
> > > > > >Why is it a problem ?
> > > > > >Axis should deserialize this message correctly on the client
> >side...
> > > > > >
> > > > >
> > > > >
_________________________________________________________________
> > > > > Want to block unwanted pop-ups? Download the free MSN Toolbar
now!
> > > > > http://toolbar.msn.co.uk/
> > > > >
> > > >
> > > >Guy Rixon [EMAIL PROTECTED]
> > > >Institute of Astronomy Tel: +44-1223-337542
> > > >Madingley Road, Cambridge, UK, CB3 0HA Fax: +44-1223-337523
> > >
> > > _________________________________________________________________
> > > Want to block unwanted pop-ups? Download the free MSN Toolbar now!
> > > http://toolbar.msn.co.uk/
> > >
> >
> >Guy Rixon [EMAIL PROTECTED]
> >Institute of Astronomy Tel: +44-1223-337542
> >Madingley Road, Cambridge, UK, CB3 0HA Fax: +44-1223-337523
>
>_________________________________________________________________
>Winks & nudges are here - download MSN Messenger 7.0 today!
>http://messenger.msn.co.uk
>
>
>
>
>CONFIDENTIALITY & PRIVILEGE NOTICE
>
>This e-mail is confidential to its intended recipient. It may also be
>privileged. Neither the confidentiality nor any privilege attaching to
this
>e-mail is waived lost or destroyed by reason that it has been mistakenly
>transmitted to a person or entity other than its intended recipient. If
you
>are not the intended recipient please notify us immediately by telephone
or
>fax at the numbers provided above or e-mail by Reply To Author and return
>the printed e-mail to us by post at our expense. We believe, but do not
>warrant, that this e-mail and any attachments are virus-free, but you
>should check. We may monitor traffic data of both business and personal
>e-mails. We are not liable for any opinions expressed by the sender where
>this is a non-business e-mail. If you do not receive all the message, or
if
>you have difficulty with the transmission, please telephone us
immediately.
_________________________________________________________________
Winks & nudges are here - download MSN Messenger 7.0 today!
http://messenger.msn.co.uk
CONFIDENTIALITY & PRIVILEGE NOTICE
This e-mail is confidential to its intended recipient. It may also be
privileged. Neither the confidentiality nor any privilege attaching to this
e-mail is waived lost or destroyed by reason that it has been mistakenly
transmitted to a person or entity other than its intended recipient. If you
are not the intended recipient please notify us immediately by telephone or
fax at the numbers provided above or e-mail by Reply To Author and return
the printed e-mail to us by post at our expense. We believe, but do not
warrant, that this e-mail and any attachments are virus-free, but you
should check. We may monitor traffic data of both business and personal
e-mails. We are not liable for any opinions expressed by the sender where
this is a non-business e-mail. If you do not receive all the message, or if
you have difficulty with the transmission, please telephone us immediately.