我的 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();
最佳答案
没有通用方法可以将字符串转换为日期,也没有在 XPath 1.0 中操作日期 - 对于您的特定情况(检查日期是否是特定年份的三月或四月):
/items/item[(contains(date,'April') or contains(date,'March')) and contains(date,'2010')]
* 更新 *
看过代码后,我想说最简单的方法是使用 XPath 获取所有 item
元素,然后使用 C# 进行过滤 - 即获取 date 的值
子元素,使用 DateTime.Parse
将其转换为日期时间,然后在 C# 代码中进行比较。
可以向 .NET XPath 添加扩展函数来执行您需要的操作(请参阅 this ),但它相当复杂,在这种情况下可能不值得付出努力。
关于c# - 如何根据 xpath 中的日期范围选择节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942793/