您好,我在尝试编写测试时遇到了XPath表达式问题。 我有以下代码片段。
final String resultCode = xPath.compile(
"//*:Envelope/*:Body/ResultCode/text()")
.evaluate(responseEntity.getBody());
我的模拟返回了responseEntity。它由HttpStatus和xml格式的适当响应体组成。在执行测试时,我得到了这个异常
引起:javax.xml.xpath.XPathExpressionException:无法找到类java.lang.String的节点的对象模型实现 at net.sf.saxon.xpath.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:321) at net.sf.saxon.xpath.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:396) ...
我正在使用撒克逊人完成这项任务,但说实话,我对它并不熟悉。欢迎任何建议检查的建议
答案 0 :(得分:0)
好的,我已经弄清楚了。不幸的是,当您必须在一个根本不了解的字段中修复某人的代码时,会发生这样的事情。
问题是,一个字符串被传递给evaluate
方法,而它期望有一个NodeInfo
,DOM
,Document
等。
还要感谢@paul trmbrth修复xpath表达式,这也是格式错误。
我将代码更改为:
InputSource source = new InputSource(new StringReader(responseEntity.getBody()));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
final Document document = db.parse(source);
final String resultCode = xPath.compile(
"//*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='ResultCode']/text()")
.evaluate(document);