使用XmlSerializer序列化DataType ="time"字段

Cra*_*lla 5 .net c# xml xml-serialization

使用XmlSerializer序列化DateTime字段时,我得到一个奇怪的结果.

我有以下课程:

public class RecordExample
{
    [XmlElement("TheTime", DataType = "time")]
    public DateTime TheTime { get; set; }

    [XmlElement("TheDate", DataType = "date")]
    public DateTime TheDate { get; set; }

    public static bool Serialize(
        Stream stream, object obj, Type objType, Encoding encoding)
    {
        try
        {
            var settings = new XmlWriterSettings { Encoding = encoding };

            using (var writer = XmlWriter.Create(stream, settings))
            {
                var xmlSerializer = new XmlSerializer(objType);
                if (writer != null) xmlSerializer.Serialize(writer, obj);
            }

            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下测试代码调用XmlSerializer时:

var obj = new RecordExample 
{ 
    TheDate = DateTime.Now.Date, 
    TheTime = new DateTime(0001, 1, 1, 12, 00, 00) 
};

var ms = new MemoryStream();

RecordExample.Serialize(ms, obj, typeof(RecordExample), Encoding.UTF8);
txtSource2.Text = Encoding.UTF8.GetString(ms.ToArray());
Run Code Online (Sandbox Code Playgroud)

我得到一些奇怪的结果,这是生成的xml:

<?xml version="1.0" encoding="utf-8"?>
<RecordExample 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <TheTime>12:00:00.0000000+00:00</TheTime>
    <TheDate>2010-03-08</TheDate>
</RecordExample>
Run Code Online (Sandbox Code Playgroud)

任何想法是我如何让"TheTime"元素包含一个看起来更像这样的时间:

<TheTime>12:00:00.0Z</TheTime>
Run Code Online (Sandbox Code Playgroud)

......那就是我所期待的?

谢谢

戴夫