xPath and max function
本文关键字:function max and xPath | 更新日期: 2023-09-27 18:05:41
我有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();
谢谢,
您可以使用LINQ来处理XML,例如:
var result = document.Element("books")
.Elements("book")
.OrderByDescending(b => (DateTime)b.Element("date"))
.First();
没有直接的方法可以做到这一点。一些简单的算法是…:
- 用第一个节点的日期创建日期变量pretty
- 开始遍历xml
- 读取时间…使用
translate
转换 - 检查它是否比变量老。
- 如果是,更新变量
- 继续读取xml,直到到达end
try this:
var result = document
.Elements("books")
.Elements("book")
.Elements("date")
.Min(e => DateTime.Parse(e.Value));
试试这个
var booksList = document.Descendants("book")
.Min(b => Convert.ToDateTime(b.Element("date").Value));