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?
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
Try using XPathNavigator instead of just XmlDocument.Select*. Then you may create an XPathExpression instance and make it sorted via AddSort.
来源:https://stackoverflow.com/questions/2544391/xmldocument-selectnodesxpath-order-of-result