我的XML:http://www.lakelandcollege.ca/rustlers/all-news.xml
我使用此代码选择了一年的项目节点:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/rustlers/all-news.xml"));
DataListArchive.DataSource = xmlDoc.SelectNodes("/items/item[contains(date,'2011')]");
DataListArchive.DataBind();
但现在我需要选择日期为2011年4月1日至2012年3月31日的项目节点。如何将XML中的日期转换为实际日期值并将其与范围进行比较?
我会喜欢这样的东西:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/rustlers/all-news.xml"));
DataListArchive.DataSource = xmlDoc.SelectNodes("/items/item[date between '01-APR-2011' and '31-MAR-2012']");
DataListArchive.DataBind();
答案 0 :(得分:2)
没有通用的方法将字符串转换为日期,也无法在XPath 1.0中操作日期 - 针对您的具体情况(检查日期是在特定年份的3月或4月):
/items/item[(contains(date,'April') or contains(date,'March')) and contains(date,'2010')]
*更新*
看过代码我会说最简单的方法是使用XPath获取所有item
元素,然后使用C#进行过滤 - 即得到date
子的值element,使用DateTime.Parse
将其转换为日期时间,然后使用C#代码进行比较。
可以将扩展函数添加到.NET XPath中以执行您需要的操作(请参阅this),但它非常复杂,在这种情况下可能不值得付出努力。