处理一个问题,我似乎无法遍历元素并将日期值转换为xml中的日期时间,然后打印出日期大于“x”日期的所有元素控制台。 XML文件相当大,但这里是一个示例。C#Linq to XML元素
<DataSet>
<diffgr:diffgram xmls="">
<NewDataSet>
<USER_LOGIN>
<USER_LOGIN_ID>123</USER_LOGIN_ID>
<DATE>2017-03-01T16:56:16.59-06:00</<DATE>
</USER_LOGIN>
<CONTENT>
<CONTENT_ID>123</CONTENT_ID>
<DATE>2017-03-01T16:56:16.59-06:00</<DATE>
</CONTENT>
ETC. ETC.
<NewDataSet>
</diffgr:diffgram>
<DataSet>
在我的代码我有,我想通过阅读和输出里面哪里日期比“硬编码的一些日期”更大的所有元素的列表。我意识到我可以为后代中的每个元素都有一个foreach循环,但我希望这是动态的,因为有更多的元素必须循环通过比我的示例。这是我目前的代码。这会失败,并在我的代码中的where子句中显示Null异常。如果我删除where子句,它将打印所有元素。
XDocument doc= XDocument.Load("xmlfile.xml");
DateTime testDate= new DateTime(2017, 03, 01);
IEnumerable<XElement> textSeg=
from element in doc.Descendants("NewDataSet")
where (DateTime)element.Element("DATE")>testDate
select element;
foreach (XElement element in textSeg)
{Console.Writeline(element);}
的[这]可能的复制(http://stackoverflow.com/questions/4570185/how-用datetime-value-using-linq-to-xml查询)SO问题。 –
看来可能你有一些没有DATE元素的节点?试着查询你的数据来找到'where element.Element(“DATE”)== null'或添加'DateTime'类型转换,并查看哪些节点有问题。 – NetMage