在针对xml进行评估时,是否可以获取xpath失败的节点或元素或属性的信息

时间:2014-05-22 12:23:22

标签: xpath

我有一些xpath,我正在评估XML。

//view/section/row
[(cell/data[@value='Other Roles'])  and
(cell/data[contains(@value,'336')]) and
(cell/data[contains(@value,'0')])   and
(cell/data[contains(@value,'320')]) and
(cell/data[contains(@value,'16')])  and
(cell/data[contains(@value,'0')]) ]

执行此操作时,xpath可能不可用,如果row没有包含数据的单元格336,是否可以获取失败的信息

提供此信息的任何代码/工具

2 个答案:

答案 0 :(得分:1)

一般情况下,

即使结果集为空,也不意味着它失败。它只是一个空结果集,这是一个有效的结果。事实上,你的假设是错误的,因为XPath没有失败。

如果您想检查您的XPath是否为空序列,可以使用fn:empty()进行检查,例如: empty(cell/data[contains(@value,'336')])

使用XPath 2.0,您还可以使用fn:error()功能引发自己的错误。但是,我没有看到您希望如何以有用的方式在此特定示例中应用它。

答案 1 :(得分:1)

我没有看到自动执行此操作的任何工具,手动执行此类健全性检查非常有用:

首先检查您是否匹配views

//view

然后sections

//view/section

然后rows

//view/section/row

然后具体rows

//view/section/row[(cell/data[@value='Other Roles'])]

...直到你达到现实偏离预期的程度。然后你就会知道必须在何处进行调整。