【发布时间】:2017-04-20 18:45:17
【问题描述】:
解决我似乎无法单步执行元素并将日期值转换为 xml 中的日期时间的问题,然后将日期大于“x”日期的所有元素打印到控制台。 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);}
【问题讨论】:
-
this SO 问题的可能重复项。
-
您似乎有一些没有 DATE 元素的节点?尝试查询您的数据以找到
where element.Element("DATE") == null或添加DateTime演员表,看看哪些节点有问题。