[Mono-dev] "Invalid format" message using DataSet.ReadXML with a xs:dateTime column

iguana mono at vokabeln.de
Wed Jun 4 10:58:48 EDT 2008


Hello, 

I created a DataSet table with a DateTime column and saved it into a file
using DataSet.WriteXML. Using the same code, the files created by .NET and
MONO differ because, apparently, MONO saves DateTime values in a different
way: 

.NET:
<TestColumn>2008-06-06T07:07:00.009+02:00</TestColumn>
MONO:
<TestColumn>2008-06-06T07:07:00.0088888</TestColumn>

MONO saves the milliseconds more accurately but seems to be unaware of time
zones. What's worse, however, is that when I create a file with .NET and
then try to read it with MONO I get an "Invalid format" error message: MONO
does not seem to be able to deal with the time zone information "+02:00"
saved by .NET. 

This is the VB code I use (having created a simple form with two buttons
"cmdWriteXML" and "cmdReadXML"): 


Imports System.Data
Public Class Form1
  Private TestFile As String = "C:\Test.xml"

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
    Dim MyDate As DateTime = CDate("06.06.2008
07:07").AddMilliseconds(8.8888)
    Dim TestTable As DataTable = New DataTable("TestTable")
    TestTable.Columns.Add("TestColumn", Type.GetType("System.DateTime"))
    Dim TestRow As DataRow = TestTable.NewRow
    TestRow("TestColumn") = MyDate
    TestTable.Rows.Add(TestRow)
    Dim TestDataSet As DataSet = New DataSet("TestDataSet")
    TestDataSet.Tables.Add(TestTable)
    TestDataSet.WriteXml(TestFile, XmlWriteMode.WriteSchema)
  End Sub

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
    Try
      Dim TestDataSet As DataSet = New DataSet()
      TestDataSet.ReadXml(TestFile, XmlReadMode.ReadSchema)
      MsgBox("Success")
    Catch ex As Exception
      MsgBox(ex.Message)
    End Try
  End Sub
End Class

Clicking both Button1 and Button2 in .NET produces "Success".
Clicking both Button1 and Button2 in MONO produces "Success".
Clicking Button1 in MONO and Button2 in .NET produces "Success."
Clicking Button1 in .NET and Button2 in MONO produces "Invalid format."


The file created by this code looks like this: 

<?xml version="1.0" standalone="yes"?>
<TestDataSet>
  <xs:schema id="TestDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="TestDataSet" msdata:IsDataSet="true"
msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="TestTable">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="TestColumn" type="xs:dateTime"
minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <TestTable>
    <TestColumn>   ***DIFFERENT VALUES SEE ABOVE***   </TestColumn>
  </TestTable>
</TestDataSet>


Is this a bug in MONO? Can it be fixed? 

Regards
iguana
-- 
View this message in context: http://www.nabble.com/%22Invalid-format%22-message-using-DataSet.ReadXML-with-a-xs%3AdateTime-column-tp17648818p17648818.html
Sent from the Mono - Dev mailing list archive at Nabble.com.



More information about the Mono-devel-list mailing list