我有一段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)
据我了解,.NET支持不保证节点顺序的XPath 1.0
当评估选择节点的XPath 1.0表达式时,所选节点形成一个node-set。节点集是一个集合,除其他外,这意味着它是无序的。
但是,出于实际目的,选择一种主要顺序来枚举节点集的节点:文档顺序。实际上,我知道的所有XPath 1.0引擎(当然也包括.NET中的引擎)都按文档顺序返回选定的节点。将来这种情况不太可能改变,因为供应商试图保持向后兼容性。
因此,只需尝试使用SelectNodes()或Evaluate()方法,并验证结果中的节点是否按文档顺序。
请注意:以下顺序不能保证,并且取决于实现:
相同元素的属性。
属于不同文档的节点(可以使用XSLT函数生成包含来自不同文档的节点的节点集document(),因此您很可能不必担心)。
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |