如何保证XPath“ OR”查询的节点顺序

Tom*_*ter 2 .net xml xpath

我有一段XML,看起来像

<body>
   Some text....
   <nodeA>....</nodeA>
   more text
   <someOtherNode>
      <nodeA>.......</nodeA>
   </someOtherNode>
   <nodeB>.......</nodeB>  
   etc.....
</body>
Run Code Online (Sandbox Code Playgroud)

我正在<body>使用类似于以下内容的XPATH查询 选择所有的nodeA和NodeB节点//nodeA|//nodeB

据我了解,.NET支持不保证节点顺序的XPath 1.0。

我如何保证在我的OR查询中按文档顺序返回选定的节点:

nodeA, nodeA, nodeB   
Run Code Online (Sandbox Code Playgroud)

Dim*_*hev 5

据我了解,.NET支持不保证节点顺序的XPath 1.0

当评估选择节点的XPath 1.0表达式时,所选节点形成一个node-set节点集是一个集合,除其他外,这意味着它是无序的

但是,出于实际目的,选择一种主要顺序来枚举节点集的节点:文档顺序。实际上,我知道的所有XPath 1.0引擎(当然也包括.NET中的引擎)都按文档顺序返回选定的节点。将来这种情况不太可能改变,因为供应商试图保持向后兼容性。

因此,只需尝试使用SelectNodes()Evaluate()方法,并验证结果中的节点是否按文档顺序

请注意:以下顺序不能保证,并且取决于实现:

  1. 相同元素的属性。

  2. 属于不同文档的节点(可以使用XSLT函数生成包含来自不同文档的节点的节点集document(),因此您很可能不必担心)。