2011-11-11 62 views
1

有没有办法检查为什么xPathNavigator.evaluate()调用不返回节点?从xpathnavigator获取结果评估

例如给出下面的XML文档:

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

和下面的XPath表达式:

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

我想某种指示的该未被选择的节点,因为该条款的“座位= 2“不是因为车轮的数量。

这是有可能的吗?

回答

0

以下XPath表达式:

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

我想某种指示该节点没有被选中 因为该条的“座位= 2”不是因为轮的数量的。

这是有可能的吗?

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

//Vehicles[car[wheels = 4]] 

这里如果结果不为空(或XmlNode的空集),那么你就会知道,如果下一个表达式:

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

选择0节点,那么这样做的原因是,有car的孩子,有4个轮子,但他们都不恰好有2个席位。

+0

我无法自己写xPath查询来测试它,因为我想测试的xPath查询是在运行时生成的。除非有办法分隔“where”子句 – user1041808

+0

@ user1041808:您应该编辑问题并解释。如果您没有对XPath表达式的运行时生成进行控制,那么几乎不可能处理XPath表达式并将其从中取出 - 除非您自己编写自己的XPath分析器。 –

1

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

你可以做的最好的是定义你想检查和测试的条件种类。