0

基本上我有一个 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;

O 什么是另一种可行的最佳方法?

4

2 回答 2

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();
于 2012-12-17T14:16:13.077 回答
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);
于 2012-12-17T14:48:19.897 回答