XmlDocument SelectNodes(Xpath):结果顺序

时间:2010-03-30 10:23:06

标签: c# xml xpath xmldocument

这是来自MSDN的示例xml

<?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");

nodelist中项目的顺序是否与xml中的顺序相同?这个订单有保证吗?

2 个答案:

答案 0 :(得分:6)

是。在反射器中查看它时,此方法最终使用XPathNodeIterator,其被记录为按文档顺序迭代。 http://msdn.microsoft.com/en-us/library/1212yhbf.aspx

答案 1 :(得分:1)

尝试使用XPathNavigator而不仅仅是XmlDocument.Select *。然后,您可以创建一个XPathExpression实例,并通过AddSort对其进行排序。