1

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

例如给定以下 xml 文档:

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

和以下 xPath 表达式:

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

我想要某种迹象表明节点没有被选中是因为“seats = 2”子句而不是因为轮子的数量。

这在某种程度上可能吗?

4

2 回答 2

2

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

您能做的最好的事情就是定义您想要检查和测试的条件类型。

于 2012-04-04T16:34:16.327 回答
0

以下 xPath 表达式:

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

我想要某种迹象表明节点没有被选中是因为“seats = 2”子句而不是因为轮子的数量。

这在某种程度上可能吗?

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

//Vehicles[car[wheels = 4]]

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

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

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

于 2011-11-11T14:17:51.463 回答