如果序列化数据集有日期,我无法正确反序列化。结果是日期被视为一个单独的表而不是列本身。它似乎没有正确解析。我该如何解决这个问题?
以下是序列化和反序列化后检查的变量。您可以看到deserializedDataSet.Tables有2个计数,其原始值只有1个计数。我打印了表名,并显示第二个表是日期。此外,我可以访问原始数据集中的日期列,但无法访问反序列化版本。
以下是数据集的序列化数据。
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<producttransactionsummary>
<id>74517</id>
<branchid>9999</branchid>
<date xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Year>2016</Year>
<Month>11</Month>
<Day>10</Day>
<Hour>18</Hour>
<Minute>25</Minute>
<Second>40</Second>
<Millisecond>0</Millisecond>
</date>
</producttransactionsummary>
<producttransactionsummary>
<id>74518</id>
<branchid>9999</branchid>
<date xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Year>2016</Year>
<Month>11</Month>
<Day>10</Day>
<Hour>18</Hour>
<Minute>25</Minute>
<Second>40</Second>
<Millisecond>0</Millisecond>
</NewDataSet>
这是反序列化的数据集。
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<producttransactionsummary>
<id>74517</id>
<branchid>9999</branchid>
<date>
<Year>2016</Year>
<Month>11</Month>
<Day>10</Day>
<Hour>18</Hour>
<Minute>25</Minute>
<Second>40</Second>
<Millisecond>0</Millisecond>
</date>
</producttransactionsummary>
<producttransactionsummary>
<id>74518</id>
<branchid>9999</branchid>
<date>
<Year>2016</Year>
<Month>11</Month>
<Day>10</Day>
<Hour>18</Hour>
<Minute>25</Minute>
<Second>40</Second>
<Millisecond>0</Millisecond>
</date>
</producttransactionsummary>
</NewDataSet>
这是我目前的代码:
public static class Transport
{
public static MemoryStream Serialize(DataSet dataSet)
{
var memoryStream = new MemoryStream();
dataSet.WriteXml(memoryStream, XmlWriteMode.IgnoreSchema);
dataSet.WriteXml("input.xml");
memoryStream.Flush();
memoryStream.Position = 0;
return memoryStream;
}
public static DataSet Deserialize(MemoryStream stream)
{
var dataSet = new DataSet();
dataSet.ReadXml(stream);
dataSet.WriteXml("output.xml");
return dataSet;
}
}