Reputation: 6618
This is an example xml from 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>
When I select all book nodes using the following code, which order will these nodes have?
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
var nodeList =doc.SelectNodes("bookstore/book");
Will the order of the items in the nodelist be the same as the order in the xml? Is this order guaranteed?
Upvotes: 4
Views: 6858
Reputation: 453378
Yes. Looking at it in reflector this method ends up using an XPathNodeIterator
which is documented to iterate in document order. http://msdn.microsoft.com/en-us/library/1212yhbf.aspx
Upvotes: 7
Reputation: 1156
Try using XPathNavigator instead of just XmlDocument.Select*. Then you may create an XPathExpression instance and make it sorted via AddSort.
Upvotes: 2