[Mono-dev] Bug in handling of Datetime in Xml Serialization - testcase in msg
Mads Bondo Dydensborg
mbd at dbc.dk
Tue Jan 8 00:49:58 EST 2008
mandag 07 Januar 2008 skrev Atsushi Eno:
> Hello,
>
> I'll take a look, but it had better be filed as a bug on bugzilla so
> that the issue can be tracked down and is safer in case I just forget:
> http://www.mono-project.com/Bugs
Surprisingly, my novell login appears to work. So, I have filed:
https://bugzilla.novell.com/show_bug.cgi?id=352210
Getting a "confirmed" status on the bug would be nice. A solution even
better! :-)
Regards
Mads
>
> Atsushi Eno
>
> Mads Bondo Dydensborg wrote:
> > Hi there
> >
> > I have a difference between output in current Mono SVN and Windows 2.xxx.
The
> > following program construcs an object containing a date from an xml
string,
> > serializes and deserializes a couple of times. On Windows, the output
remains
> > stable, on Mono/Linux, my timezone appears to be substracted once for each
> > serialization/deserialization call.
> >
> > Here is the program:
> >
> > ---------------
> >
> > using System;
> > using System.IO;
> > using System.Text;
> > using System.Xml;
> > using System.Xml.Serialization;
> >
> > [System.Xml.Serialization.XmlRootAttribute(Namespace="",
IsNullable=false)]
> > public class test {
> > public System.DateTime date;
> > }
> >
> > public class Test {
> >
> > public static string DeSe( string doc ) {
> > // Deserialize
> > XmlSerializer serializer = new XmlSerializer( typeof ( test ) );
> > StringReader sr = new StringReader( doc );
> > XmlReader reader = XmlReader.Create( sr );
> > test t = (test) serializer.Deserialize( reader );
> > reader.Close();
> > sr.Close();
> >
> > // Serialize
> > MemoryStream memStream = new MemoryStream();
> > XmlTextWriter writer = new XmlTextWriter( memStream,
> > Encoding.UTF8 );
> > serializer.Serialize( writer, t );
> > writer.Close();
> > memStream.Close();
> >
> > string xml;
> > xml = Encoding.UTF8.GetString(memStream.GetBuffer());
> > xml = xml.Substring(xml.IndexOf(Convert.ToChar(60)));
> > xml = xml.Substring(0, (xml.LastIndexOf(Convert.ToChar(62)) + 1));
> > return xml;
> > }
> >
> > public static void Main() {
> > // Start with 10:30, no timezone
> > string doc = @"<test><date>2007-06-15T10:30:10.5</date></test>";
> > Console.WriteLine( "doc = '{0}'", doc );
> >
> > string docm = DeSe( doc );
> > Console.WriteLine( "docm = '{0}'", docm );
> >
> > string doc2m = DeSe( docm );
> > Console.WriteLine( "doc2m = '{0}'", doc2m );
> >
> > string doc3m = DeSe( doc2m );
> > Console.WriteLine( "doc3m = '{0}'", doc3m );
> > }
> > }
> >
> > ----------
> >
> > Here is the ouput from Windows:
> > doc = '<test><date>2007-06-15T10:30:10.5</date></test>'
> > docm = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T10:30:10.5</date></test>'
> > doc2m = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T10:30:10.5</date></test>'
> > doc3m = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T10:30:10.5</date></test>'
> >
> > And here is from current Mono SVN (1.2.6 same):
> >
> > doc = '<test><date>2007-06-15T10:30:10.5</date></test>'
> > docm = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T10:30:10.5+02:00</date></test>'
> > doc2m = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T08:30:10.5+02:00</date></test>'
> > doc3m = '<?xml version="1.0" encoding="utf-8"?><test
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><date>2007-06-15T06:30:10.5+02:00</date></test>'
> >
> > Note how the time "shifts" on Mono. I believe this is a bug.
> >
> > Regards
> >
> > Mads
> >
>
>
>
--
Med venlig hilsen/Regards
Systemudvikler/Systemsdeveloper cand.scient.dat, Ph.d., Mads Bondo Dydensborg
Dansk BiblioteksCenter A/S, Tempovej 7-11, 2750 Ballerup, Tlf. +45 44 86 77 34
More information about the Mono-devel-list
mailing list