• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

选择一个基于节点的xml后裔

c/c++ 来源:mikemind 3次浏览

我有一个XML,我想根据日期选择一个元素。所以日期后裔的日期列表比今天少。选择一个基于节点的xml后裔

XML有这样

<Dates> 
<Department> 
<ID>Food</ID> 
<Date>25-11-2016</Date> 
</Department> 
<Department> 
<ID>Sport</ID> 
<Date>26-10-2016</Date> 
</Department> 
</Dates> 

值现在,我需要选择只有元素,其中各自的日期小于今天和下面的查询将选择日期,并从XML删除的项目。

XDocument newXML = XDocument.Load(new StringReader(xmlValues)); 
var q = from node in newXML.Descendants("Date")   
     let attr = node.Value where attr != null && DateTime.ParseExact 
     (attr, "dd-MM-yyyy", CultureInfo.InvariantCulture) < DateTime.Today  
     select node.Parent;    
q.ToList().ForEach(x => x.Remove()); 

现在我该如何挑选只有日期少于今天的以下物品?

<Department> 
<ID>Sport</ID> 
<Date>26-10-2016</Date> 
</Department> 


===========解决方案如下:

试试这个

  string xml = 
       "<Dates>" + 
        "<Department>" + 
        "<ID>Food</ID>" + 
        "<Date>25-11-2016</Date>" + 
        "</Department>" + 
        "<Department>" + 
        "<ID>Sport</ID>" + 
        "<Date>26-10-2016</Date>" + 
        "</Department>" + 
       "</Dates>"; 

      XElement dates = XElement.Parse(xml); 

      List<XElement> departs = dates.Descendants("Department").Where(x => DateTime.ParseExact(x.Element("Date").Value, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture) < DateTime.Now).ToList(); 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)