1

我的 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();
4

1 回答 1

2

在 XPath 1.0 中没有将字符串转换为日期或操作日期的通用方法 - 对于您的特定情况(检查日期是在特定年份的 3 月还是 4 月):

/items/item[(contains(date,'April') or contains(date,'March')) and contains(date,'2010')]

* 更新 *

看过代码后,我想说最简单的方法是使用 XPath 获取所有item元素,然后使用 C# 进行过滤 - 即获取date子元素的值,使用将其转换为日期时间DateTime.Parse,然后执行C# 代码中的比较。

可以将扩展函数添加到 .NET XPath 以执行您需要的操作(请参阅内容),但它非常复杂,在这种情况下可能不值得付出努力。

于 2012-08-14T14:26:58.047 回答