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 に答える