XmlDocument SelectNodes (Xpath): порядок результата - PullRequest
3 голосов
/ 30 марта 2010

Это пример XML от MSDN

<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
  <book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
    <title>Pride And Prejudice</title>
  </book>
  <book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
    <title>The Handmaid's Tale</title>
  </book>
  <book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
    <title>Emma</title>
  </book>
  <book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
    <title>Sense and Sensibility</title>
  </book>
</bookstore>

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

XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");

var nodeList =doc.SelectNodes("bookstore/book");

Будет ли порядок элементов в нодлисте совпадать с порядком в xml? Этот заказ гарантирован?

Ответы [ 2 ]

6 голосов
/ 30 марта 2010

Да. Глядя на это в отражателе, этот метод заканчивается использованием XPathNodeIterator, который задокументирован для итерации в порядке документа. http://msdn.microsoft.com/en-us/library/1212yhbf.aspx

1 голос
/ 30 марта 2010

Попробуйте использовать XPathNavigator вместо просто XmlDocument.Select *. Затем вы можете создать экземпляр XPathExpression и отсортировать его с помощью AddSort .

...