Возврат узлов XML в определенном порядке - PullRequest
2 голосов
/ 01 ноября 2011

Я запрашиваю XMLDocument, используя SelectNodes(). Однако мне нужно, чтобы возвращаемый запрос был в определенном порядке на основе элемента, содержащегося внутри запрашиваемых узлов. Я не вижу способа сделать это с помощью метода SelectNodes. Как это можно сделать?

Вот мой запрос:

XmlNodeList booksNodes = xmlDoc.DocumentElement.SelectNodes("//BOOKS");

Я хочу упорядочить это по дате публикации, которая является элементом, содержащимся в узле <BOOKS>.

Ответы [ 2 ]

6 голосов
/ 01 ноября 2011

Попробуйте LINQ для своей коллекции узлов, как здесь:

IOrderedEnumerable<XmlNode> booksNodes = doc.DocumentElement.SelectNodes("//BOOKS")
    .Cast<XmlNode>()
    .OrderBy(node => node.Attributes["title"].Value);
0 голосов
/ 01 ноября 2011

Я предполагаю, что вы используете C # на основе имен классов.В любом случае, если вы можете использовать XSLT, вы обнаружите там удобный элемент <xsl:sort>.Возможно, вы можете применить XSLT к вашему документу и отфильтровать те узлы, которые вам нужны, уже отсортированные по нужному элементу.

В противном случае, я полагаю, вам нужно отсортировать итоговый список, используя некоторый пользовательский метод сравнения, который удаляетк содержащемуся элементу.

Я не разработчик C # (Java-парень), поэтому я не знаю, как это сделать, но я верю, что вам, счастливчикам, дается всякая классная поддержка и делегатская поддержка, так чтоне должно быть слишком сложно: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...