2

我正在使用 LINQ to XML 表达式将一些 XML 数据反序列化为对象列表。我的对象只是一个集合字段:

public class DataObject
{
 private string Name { get; set; }
 private DateTime Date { get; set; }
} 

这是 LINQ 查询:

XDocument linqXml = XDocument.Parse(dataToDeserialize.OuterXml)
List<DataObject> MyObjects = (from object in linqXml.Descendants("object")
select new DataObject
{
 Name = object.Element("Name").Value,
 Date = Convert.ToDateTime(object.Element("Date").Value)
} 

当我运行它时,LINQ 查询会引发 FormatException:“字符串未被识别为有效的 DateTime。”

XML 中的日期字符串采用 UTC 格式:2013-05-02T11:25:35-06:00

为了测试,我尝试了日期时间的转换,它正确地返回了 DateTime 对象。

DateTime dt = Convert.ToDateTime("2013-05-02T11:25:35-06:00");

并且字符串正确地转换为新的 DateTime 对象。如果我将对象上的日期字段转换为字符串类型,然后将其转换为另一种方法,它就会转换。当 LINQ 查询的一部分时,它似乎不起作用。

我被这个难住了。我也尝试过使用 DateTime.Parse(string) ,但这会引发相同的异常。有没有办法在查询中进行这种转换,或者我必须在创建对象后转换字段?

编辑添加:

示例 XML:每个标记中的属性是由我正在查询以获取此数据的事务引擎生成的。我在调试时提取了 XML 的文本,并且 Date 标记之间似乎没有额外的空格。

<Object>
 <Name __genericType="String" __specificType="[String]" __nodeType="DataField">HelloThere</Name>
 <Date __genericType="Timestamp" __specificType="[TimeStamp]" __nodeType="DataField">2013-05-12T11:08:04-06:00</Date>
</Object>
4

0 回答 0