我使用XMLDocument
查询SelectNodes()
。但是,我需要根据查询节点中包含的元素,以特定顺序返回查询。我看不到使用SelectNodes
方法执行此操作的任何方法。如何实现这一目标?
这是我的问题:
XmlNodeList booksNodes = xmlDoc.DocumentElement.SelectNodes("//BOOKS");
我想通过发布日期对此进行排序,发布日期是<BOOKS>
节点中包含的元素。
答案 0 :(得分:6)
针对您的节点集合尝试使用LINQ:
IOrderedEnumerable<XmlNode> booksNodes = doc.DocumentElement.SelectNodes("//BOOKS")
.Cast<XmlNode>()
.OrderBy(node => node.Attributes["title"].Value);
答案 1 :(得分:0)
我假设您正在使用基于类名的C#。无论如何,如果你在libery中使用XSLT,你会发现那里有一个方便的<xsl:sort>
元素。也许您可以在文档上应用XSLT并过滤掉您需要的节点,这些节点已经按照正确的元素排序。
否则,我认为您需要使用一些自定义比较方法对结果列表进行排序,该方法可以深入研究所包含的元素。
我不是C#开发人员(Java人)所以我不知道这是怎么做的,但我相信你们幸运的恶魔得到了各种各样的酷关闭和委托支持,所以这不应该太难:D