Функция xPath и max - PullRequest
       1

Функция xPath и max

1 голос
/ 15 августа 2011

У меня есть XML-файл, и я хотел бы найти узел с самой старой датой.

Можно ли сделать это без XLST?

Код:

var xml = @"<books>
                      <book>
                        <id>1</id>
                        <date>2011-01-02</date>
                      </book>
                      <book>
                        <id>2</id>
                        <date>2011-02-02</date>
                      </book>
                      <book>
                        <id>3</id>
                        <date>2011-03-01</date>
                      </book>
                    </books>
                    ";

XDocument document = XDocument.Parse(xml);    
var result = document.XPathSelectElements("//books/book[max(????)]").ToList();

Спасибо

Ответы [ 5 ]

0 голосов
/ 15 августа 2011

Попробуйте это.

var booksList = document.Descendants("book")
            .Min(b => Convert.ToDateTime(b.Element("date").Value));
0 голосов
/ 15 августа 2011

Вы можете использовать LINQ to XML, например ::100100

var result = document.Element("books")
            .Elements("book")
            .OrderByDescending(b => (DateTime)b.Element("date"))
            .First();
0 голосов
/ 15 августа 2011

Не было бы прямого способа сделать это.Какой-то простой алгоритм будет ..:

  1. создать переменную даты довольно с датой первого узла /
  2. начать перебирать xml
  3. читать время .. преобразовать его, используяtranslate
  4. проверьте, не старше ли она переменной.
  5. если да, обновите переменную
  6. Продолжайте чтение xml в эфире, пока не достигнете конца
0 голосов
/ 15 августа 2011

попробуйте это:

var result = document
                .Elements("books")
                .Elements("book")
                .Elements("date")
                .Min(e => DateTime.Parse(e.Value));
0 голосов
/ 15 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...