序列化 DataType=“time"使用 XmlSerializer 的字段 [英] Serializing a DataType="time" field using XmlSerializer
本文介绍了序列化 DataType=“time"使用 XmlSerializer 的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在使用 XmlSerializer 序列化 DateTime 字段时,我得到了一个奇怪的结果.
I'm getting an odd result when serializing a DateTime field using XmlSerializer.
我有以下课程:
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;
}
}
}
当我调用带有以下测试代码的 XmlSerializer 时:
When i call the use the XmlSerializer with the following testing code:
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());
我得到了一些奇怪的结果,这是生成的 xml:
I get some strange results, here's the xml that is produced:
<?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>
任何想法是如何让TheTime"元素包含一个看起来更像这样的时间:
Any idea's how i can get the "TheTime" element to contain a time which looks more like this:
<TheTime>12:00:00.0Z</TheTime>
...正如我所期望的那样?
...as that's what i was expecting?
谢谢
戴夫
推荐答案
看看这个问题 将DateTime序列化为没有毫秒和gmt的时间
这篇关于序列化 DataType=“time"使用 XmlSerializer 的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文