从xpathnavigator evaluate获得结果

时间:2011-11-11 14:01:49

标签: c# xpath evaluate navigator

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

例如,给出以下xml文档:

<Vehicles>
   <car>
      <wheels>4</wheels>
      <seats>5</seats>
   </car>
</Vehicles>

和以下xPath表达式:

//Vehicles[((car[wheels = 4 and seats = 2]))]

我想要某种迹象表明由于“seat = 2”这个子句没有选择节点,不是因为轮子的数量。

这有可能吗?

2 个答案:

答案 0 :(得分:2)

“为什么”不是您可以自动化的问题。 XPath表达式不会选择任何节点的原因有很多。如果节点位于错误的命名空间怎么办?如果你写“//车辆”而不是“//车辆”怎么办?

您可以做的最好的事情是定义您要检查的各种条件并进行测试。

答案 1 :(得分:0)

  

以下xPath表达式:

//Vehicles[((car[wheels = 4 and seats = 2]))] 
     

我想要某种迹象表明该节点未被选中   因为“座位= 2”这个条款并不是因为车轮的数量。

     

这有可能吗?

如果你使用这些表达式,这是可能的:

//Vehicles[car[wheels = 4]]

这里如果结果不为null(或者是XmlNode的空集合),那么你将知道如果下一个表达式:

//Vehicles[car[wheels = 4][seats = 2]]

选择0个节点,原因是有car个孩子有4个轮子,但没有一个有2个座位。