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 Dorner Thomas <th...@edmb.debis.com> on 2004/07/21 13:42:33 UTC
Help please - Complex Types
Hello,
this is my second post for this problem - unfortunately no one can help me!?
My Problem is:
I send a HashMap from a WebService-Client to my WebService - no Problem so
far.
The WSDL for the HashMap looks like this:
<schema elementFormDefault="qualified"
targetNamespace="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="mapItem">
<sequence>
<element name="key" nillable="true"
type="xsd:anyType" />
<element name="value" nillable="true"
type="xsd:anyType" />
</sequence>
</complexType>
<complexType name="Map">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
name="item" type="apachesoap:mapItem" />
</sequence>
</complexType>
</schema>
Now i can see the value for the HashMap is defined as xsd:anyType, so I can
send everything.
When I now use to send an Array in the HashMap for the value I got some
Error:
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>
org.xml.sax.SAXException: SimpleDeserializer encountered a child element,
which is NOT expected, in something it was trying to deserialize.
</faultstring>
Why this error???
--> the value of the HashMap looks like this:
<item xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://xml.apache.org/xml-soap" xmlns="">
<key>kem</key>
<value>
<item xsi:type="soapenc:string">teset</item>
<item xsi:type="soapenc:string">test</item>
</value>
</item>
So I have more then one item in the value of the HashMap
Okay,on the other hand - when I send an Array to a Class which was defined
in the wsdl like this:
<element name="isActual">
<complexType>
<sequence>
<element maxOccurs="unbounded"
name="isActualVersionOBIDs" type="xsd:string" />
<element maxOccurs="unbounded" name="isActualKem"
type="xsd:string" />
<element name="isActualLanguageID" type="xsd:string"
/>
</sequence>
</complexType>
</element>
There is no Problem!
--> Axis know there is a Array coming and deserialize it.
Maybe I had define in my WSDL that the value can hold xsd:anyType with
maxOccurs="unbounded".
I think this defines an Array[] of anyType - in Doc/lit - wrapped style?
Can someone tell me, what the hell I must do to send an Array in my HashMap
without an error when
Axis want to deserialize the Value?
Some help will be appreciated
Thanks Tomi