XPath布尔表达式始终返回True

时间:2017-08-08 20:57:56

标签: java xpath

我正在使用Java的XPath API评估下面的XPath布尔表达式。但是,表达式始终返回true。

布尔值(// InteractionControl / MessageId [text()=“fdsfsd”])

XML文档中 MessageId 节点的文本值为“9000”,因此除非我遗漏了某些内容,否则上述XPath表达式应返回false。

2 个答案:

答案 0 :(得分:2)

如果count(//InteractionControl/MessageId[text() = "fdsfsd"])不为0,则xpath与非空节点集匹配,后者将boolean()函数解析为true。看这里: https://developer.mozilla.org/en-US/docs/Web/XPath/Functions/boolean

答案 1 :(得分:0)

我使用"评估"解决了这个问题。 XPath API中的函数,它接受一个指定返回类型的参数。

Boolean evaluation = xPath.compile(xPathStr).evaluate(xmlDocument, XPathConstants.BOOLEAN)

也许"评估"不接受指定返回类型的参数的函数有一个错误。