基本上我有一个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>
所以我想要的是例如我通过日期11/15/2011,并且只返回所有以后发布的文件?知道如何实现这个目标吗?
是这样的吗?:
var returnedEl = from XElement e in doc.Root.Elements where e.Element("release_date")> passedDate select e;
那会是另一种有效的方法吗?
答案 0 :(得分: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 :(得分:1)
这也可行,它使用XPathSelectElements
命名空间中的System.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);