使用linq将datetime从xml转换为c#对象

时间:2013-07-09 07:35:59

标签: c# linq linq-to-xml

我在下面有以下代码:

XDocument xmldocument = XDocument.Load(xmlfile);
List<Client> clients = (from client in xmldocument.Element("Clients").Elements("Client")
                       select new Client
                       {
                             Name = client.Element("Name").Value,
                             Birthday = Convert.ToDateTime(client.Element("Birthday").Value)
                       }).ToList();

这是我的xml:

 <Clients>
 <Client>
      <Name>Firstname Lastname</Name>
      <Birthday>01/01/1991</Birthday>
 </Client>
 </Clients>

我的问题是每当我尝试运行代码时,我都会收到一个空引用错误。但是当我从linq语句中删除了Birthday时,我得到了数据,所以我认为我的转换到目前为止肯定有问题。

我错过了什么吗?谢谢!

2 个答案:

答案 0 :(得分:3)

使用XElement to DateTime conversion代替Convert.ToDateTime

XDocument xmldocument = XDocument.Load(xmlfile);
List<Client> clients = (from client in xmldocument.Element("Clients").Elements("Client")
                       select new Client
                       {
                             Name = (string)client.Element("Name"),
                             Birthday = (DateTime)client.Element("Birthday")
                       }).ToList();

答案 1 :(得分:0)

您可以使用Parse方法:

DateTime.Parse(client.Element("Birthday").Value).Date

或ParseExact方法,格式为dd / MM / yyyy

DateTime.ParseExact(client.Element("Birthday").Value, "d/M/yyyy", CultureInfo.InvariantCulture).Date;

或ParseExact方法,格式为MM / dd / yyyy

DateTime.ParseExact(client.Element("Birthday").Value, "M/d/yyyy", CultureInfo.InvariantCulture).Date;