我有一些RESTful服务的XSD架构。当与xsd.exe工具结合使用以生成C#代码时,XSD会xs:date生成以下代码:
xsd.exe
xs:date
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")] public System.DateTime time { get { return this.timeField; } set { this.timeField = value; } }
将XML反序列化为对象时,XmlSerializer一切似乎都很好。我面临的问题是该服务希望日期格式化为YYYY-MM-DD hh:mm:ssXSD生成的代码似乎只能生成YYYY-MM-DD。
XmlSerializer
YYYY-MM-DD hh:mm:ss
YYYY-MM-DD
如果我手动修改XSD以xs:dateTime键入,则生成的C#代码将产生:2010-08-20T20:07:03.915039Z。
xs:dateTime
2010-08-20T20:07:03.915039Z
基本上,我如何强制序列化产生YYYY-MM-DD hh:mm:ss?是否可以对XSD进行某些操作,或者可以对生成的C#代码进行更改?
过去,我已经完成了以下操作来控制日期时间序列化:
这是一个例子:
public class SomeClass { [XmlIgnore] public DateTime SomeDate { get; set; } [XmlElement("SomeDate")] public string SomeDateString { get { return this.SomeDate.ToString("yyyy-MM-dd HH:mm:ss"); } set { this.SomeDate = DateTime.Parse(value); } } }