评估简单XPath表达式时出现异常

时间:2015-07-12 18:42:49

标签: java xpath saxon

您好,我在尝试编写测试时遇到了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)   ...

我正在使用撒克逊人完成这项任务,但说实话,我对它并不熟悉。欢迎任何建议检查的建议

1 个答案:

答案 0 :(得分:0)

好的,我已经弄清楚了。不幸的是,当您必须在一个根本不了解的字段中修复某人的代码时,会发生这样的事情。

问题是,一个字符串被传递给evaluate方法,而它期望有一个NodeInfoDOMDocument等。

还要感谢@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);