2015-07-20 81 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; } 
相關問題