This is a known problem in .NET. It doesn't support nulls in a number of different types. Rather than sending a null (nillable="true") you have to simply not send the element (nillable="false" minOccurs="0").
Anne On 7/14/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > > I am trying to convert my Axis 1.1 rpc/encoded web service to Axis 1.2.1 > wrapped/literal web service but I have come across what I think is a > showstopper... > > If I populate all the decimal and date fields then everything is fine. If I > leave either a decimal or date field blank then I get an exception: > InvalidOperationException: There is an error in XML document. This doesn't > happen when I invoke my Axis 1.1 rpc/encoded web service from the same > version of .NET. > > I need to use my own classes so de/serialization uses the _Helper classes > provided by Axis when using the --helperGen option on the wsdl2Java command. > > I have attached the wsdl and the all the classes. > > <<test.wsdl>> <<DateAndDecimal_Helper.java>> <<deploy.wsdd>> > <<TestService.java>> <<TestServiceSoapBindingImpl.java>> > <<DateAndDecimal.java>> > > I have also included the XML for the response for both scenarios... > > When decimal element is null > > XML > > <?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><getDateAndDecimalResponse > xmlns="http://test.axis"><getDateAndDecimalReturn><dateValue>2005-07-14T09:47:04.376Z</dateValue><decimalValue > xsi:nil="true"/></getDateAndDecimalReturn></getDateAndDecimalResponse></soapenv:Body></soapenv:Envelope> > > .NET error message > > [FormatException: Input string was not in a correct format.] > System.Number.ParseDecimal(String s, NumberStyles style, NumberFormatInfo > info) +0 System.Decimal.Parse(String s, NumberStyles style, > IFormatProvider provider) +30 System.Xml.XmlConvert.ToDecimal(String s) > +100 > Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read6_DateAndDecimal(Boolean > isNullable, Boolean checkType) +438 > Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read13_getDateAndDecimalResponse() > +307 [InvalidOperationException: There is an error in XML document (1, > 384).] > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader, String encodingStyle, XmlDeserializationEvents events) +413 > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader, XmlDeserializationEvents events) +25 > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader) +24 > System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage > message, WebResponse response, Stream responseStream, Boolean asyncCall) > +1057 > System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String > methodName, Object[] parameters) +218 > Wrapped.AxisTests.TestServiceService.getDateAndDecimal(Int32 > in0) in c:\webroot\wrapped\web > references\axistests\reference.cs:61 > Wrapped.WebForm1.Button1_Click(Object sender, EventArgs e) in > c:\webroot\wrapped\webform1.aspx.cs:97 > System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108 > > System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String > eventArgument) +57 > System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler > sourceControl, String eventArgument) +18 > System.Web.UI.Page.RaisePostBackEvent(NameValueCollection > postData) +33 System.Web.UI.Page.ProcessRequestMain() > +1292 > When date element is null > XML > <?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><getDateAndDecimalResponse > xmlns="http://test.axis"><getDateAndDecimalReturn><dateValue > xsi:nil="true"/><decimalValue>4.000</decimalValue></getDateAndDecimalReturn></getDateAndDecimalResponse></soapenv:Body></soapenv:Envelope> > > .NET error message > [FormatException: String was not recognized as a valid DateTime.] > System.DateTimeParse.ParseExactMultiple(String s, String[] > formats, DateTimeFormatInfo dtfi, DateTimeStyles style, DateTime& result) > +286 System.DateTime.ParseExact(String s, String[] formats, IFormatProvider > provider, DateTimeStyles style) +39 > System.Xml.XmlConvert.ToDateTime(String s, String[] > formats) +103 > System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String > value, String[] formats) +9 > System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String > value) +30 > System.Xml.Serialization.XmlSerializationReader.ToDateTime(String > value) +5 > Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read6_DateAndDecimal(Boolean > isNullable, Boolean checkType) +358 > Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read13_getDateAndDecimalResponse() > +307 [InvalidOperationException: There is an error in XML document (1, > 333).] > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader, String encodingStyle, XmlDeserializationEvents events) +413 > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader, XmlDeserializationEvents events) +25 > System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader > xmlReader) +24 > System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage > message, WebResponse response, Stream responseStream, Boolean asyncCall) > +1057 > System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String > methodName, Object[] parameters) +218 > Wrapped.AxisTests.TestServiceService.getDateAndDecimal(Int32 > in0) in c:\webroot\wrapped\web > references\axistests\reference.cs:61 > Wrapped.WebForm1.Button1_Click(Object sender, EventArgs e) in > c:\webroot\wrapped\webform1.aspx.cs:97 > System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108 > System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String > eventArgument) +57 > System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler > sourceControl, String eventArgument) +18 > System.Web.UI.Page.RaisePostBackEvent(NameValueCollection > postData) +33 System.Web.UI.Page.ProcessRequestMain() +1292 > > Environment > Axis 1.2.1 wrapped/literal service deployed to websphere server > WebSphere Platform 5.1 [BASE 5.1.1 a0426.01] [JDK 1.4.2 cn1420-20040626] > [PME 5.1.1 o0429.02] running with process name localhost\localhost\server1 > and process id 3052 > > Host Operating System is Windows 2000, version 5.0 > Java version = J2RE 1.4.2 IBM Windows 32 build cn1420-20040626 (JIT enabled: > jitc), Java Compiler = jitc, Java VM name = Classic VM > > Microsoft Development Environment 2003 > Microsoft .NET Framework 1.1 > Microsoft Visual C# .NET 69586-335-0000007-18998 > __________________________________________________________________________________________________________________________________ > > This e-mail may be privileged and/or confidential, and the sender does not > waive any related rights and obligations. > Any distribution, use or copying of this e-mail or the information it > contains by other than an intended recipient is unauthorized. > If you received this e-mail in error, please advise me (by return e-mail or > otherwise) immediately. > > Ce courrier �lectronique est confidentiel et prot�g�. L'exp�diteur ne > renonce pas aux droits et obligations qui s'y rapportent. > Toute diffusion, utilisation ou copie de ce message ou des renseignements > qu'il contient par une personne autre que le (les) destinataire(s) > d�sign�(s) est interdite. > Si vous recevez ce courrier �lectronique par erreur, veuillez m'en aviser > imm�diatement, par retour de courrier �lectronique ou par un autre moyen. > >