我正在使用Java的XPath API评估下面的XPath布尔表达式。但是,表达式始终返回true。
布尔值(// InteractionControl / MessageId [text()=“fdsfsd”])
XML文档中 MessageId 节点的文本值为“9000”,因此除非我遗漏了某些内容,否则上述XPath表达式应返回false。
答案 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)
也许"评估"不接受指定返回类型的参数的函数有一个错误。