我尝试使用以下节点反序列化XML对象:
<startTime>2012-03-19T11:31:03.000Z</startTime>
<endTime>2012-03-19T11:31:03.000Z</endTime>
这些是我用来将XML反序列化为类的属性:
[System.Xml.Serialization.XmlElementAttribute(DataType = "date", ElementName = "startTime")]
public DateTime StartTime { get; set; }
[System.Xml.Serialization.XmlElementAttribute(DataType = "date", ElementName = "endTime")]
public DateTime EndTime { get; set; }
最后,这是我用来反序列化XML的代码:
Stream resultStream = await response.Content.ReadAsStreamAsync();
var serializer = new XmlSerializer(typeof(T));
return serializer.Deserialize(resultStream) as T;
但是,代码将抛出一个Exception,告诉我字符串未被识别为有效的DateTime对象 - 有一个基本异常,说明XML文件在(1,1926)处有错误,它直接指向两个时间戳
我似乎无法找到有关此错误消息的原因是格式使用不正确(即日期字符串中使用的特殊字符错误)。但是,就我而言,格式似乎符合MSDN描述的100%。
有人可以帮我指出错误吗?
答案 0 :(得分:2)
尝试在您的属性中使用"dateTime"
DataType
- (观察案例:从小d
开始):
[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "startTime")]
public DateTime StartTime { get; set; }
[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "endTime")]
public DateTime EndTime { get; set; }
答案 1 :(得分:1)
您正在尝试使用无效的DateTime
格式反序列化Time
。但是在编译时没有收到错误消息,因为DataType
是一个字符串。
你应该尝试:
[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "startTime")]
public DateTime StartTime { get; set; }
[System.Xml.Serialization.XmlElementAttribute(DataType = "dateTime", ElementName = "endTime")]
public DateTime EndTime { get; set; }