我有一些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,是否可以获取失败的信息
提供此信息的任何代码/工具
答案 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'])]
...直到你达到现实偏离预期的程度。然后你就会知道必须在何处进行调整。