2015-07-20 82 views
1

我试图反序列化具有以下节点的XML对象:字符串未被识别为有效的DateTime(UTC有效格式)

<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; 

然而,鳕鱼e会抛出一个异常,告诉我该字符串没有被识别为有效的DateTime对象 - 基本异常说XML文件在(1,1926)处有直接指向两个时间戳的错误。

所有我似乎可以找到有关此错误消息是由格式的错误使用(即在日期字符串中使用错误的特殊字符)造成的。然而,就我而言,这种格式似乎符合MSDN描述的100%。

有人能帮我指出错误吗?

+2

你似乎在说'数据类型=你期待的“日期”*只有一个日期 - 然而你提供了一个日期*和*时间。如果DataType =“dateTime”'会发生什么? –

+0

向我们展示'xml'。 –

回答

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

您正试图使用​​无法工作的Time格式反序列化DateTime。但编译时不会收到错误消息,因为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; } 
相关问题