C# 从xpathnavigator获取结果

C# 从xpathnavigator获取结果,c#,xpath,evaluate,navigator,C#,Xpath,Evaluate,Navigator,有没有办法检查为什么xPathNavigator.evaluate()调用不返回节点 例如,给定以下xml文档: <Vehicles> <car> <wheels>4</wheels> <seats>5</seats> </car> </Vehicles> 我想要某种形式的指示,表明没有选择节点是因为“seats=2”条款,而不是因为轮子的数量 这在某种程度上是可

有没有办法检查为什么xPathNavigator.evaluate()调用不返回节点

例如,给定以下xml文档:

<Vehicles>
   <car>
      <wheels>4</wheels>
      <seats>5</seats>
   </car>
</Vehicles>
我想要某种形式的指示,表明没有选择节点是因为“seats=2”条款,而不是因为轮子的数量

这在某种程度上是可能的吗

以下xPath表达式:

//Vehicles[((car[wheels = 4 and seats = 2]))]
//Vehicles[((car[wheels = 4 and seats = 2]))] 
//Vehicles[car[wheels = 4][seats = 2]]
我想知道节点没有被选中 因为条款“座椅=2”,而不是因为车轮的数量

这在某种程度上是可能的吗

如果您使用以下表达式,这是可能的:

//Vehicles[car[wheels = 4]]
这里,如果结果不是null(或XmlNode的空集合),则您将知道如果下一个表达式:

//Vehicles[((car[wheels = 4 and seats = 2]))]
//Vehicles[((car[wheels = 4 and seats = 2]))] 
//Vehicles[car[wheels = 4][seats = 2]]
选择0个节点,则其原因是有
子节点有4个轮子,但没有一个节点正好有2个座位。

您无法自动回答“为什么”这类问题。XPath表达式不选择任何节点的原因不计其数。如果节点位于错误的命名空间中怎么办?如果您写“//vehicles”而不是“//vehicles”,会怎么样


最好是定义要检查和测试的条件类型。

我不能自己编写xPath查询来进行测试,因为我要测试的xPath查询是在运行时生成的。除非有办法把“where”分开clauses@user1041808:你应该编辑问题并解释一下。如果您无法控制XPath表达式的运行时生成,那么几乎不可能处理XPath表达式并从中提取两个表达式——当然,除非您编写自己的XPath解析器。