2012-12-17 80 views
0

基本上我有一個xml文檔,我想根據發佈日期檢索一些數據。從基於日期的xml文檔檢索節點

例如,讓我們假設我有以下XML

<books> 
    <book> 
     <name>Book 1<name> 
     <release_date>2011-11-10</release_date> 
    </book> 
    <book> 
     <name>Book 2<name> 
     <release_date>2012-03-16</release_date> 
    </book> 
    <book> 
     <name>Book 3<name> 
     <release_date>2010-01-22</release_date> 
    </book> 
    <book> 
     <name>Book 4<name> 
     <release_date>2011-12-22</release_date> 
    </book> 
</books> 

所以我想擁有的是以下例如我通過它後來被釋放應該日期2011/11/15,只有所有文件被退回?任何想法如何實現?

難道這樣的事情?:

var returnedEl = from XElement e in doc.Root.Elements where e.Element("release_date")> passedDate select e; 

Ø這將是一個又一個的工作和最好的方法?

回答

1

是的,你是非常接近的解決方案

var xDoc = XDocument.Load("aa.xml"); 
DateTime passedDate = new DateTime(2010,11,11); 

var books = xDoc.Descendants("book") 
       .Where(b=>DateTime.ParseExact(b.Element("release_date").Value,"yyyy-MM-dd",CultureInfo.InvariantCulture)>passedDate) 
       .ToList(); 
1

這也將工作,它採用XPathSelectElementsSystem.Xml.XPath命名空間:

 DateTime dt = new DateTime(2011, 11, 15); 

     XDocument doc = XDocument.Load(@"Data.xml"); 
     var result = doc.XPathSelectElements("books/book/release_date") 
         .Where(el => Convert.ToDateTime(el.Value) > dt);