【发布时间】:2016-03-31 22:34:52
【问题描述】:
这是我第一次使用 XPath,我正在尝试查询一个非常基本的示例。
String xml = "<resp><status>good</status><msg>hi</msg></resp>";
XPathFactory xpathFactory = XPathFactory.newInstance();
javax.xml.xpath.XPath xpath = xpathFactory.newXPath();
InputSource source = new InputSource(new StringReader(xml));
String status = "";
try {
status = (String) xpath.evaluate("//resp/status", source,XPathConstants.STRING);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("status=" + status);
我收到以下异常:
javax.xml.transform.TransformerException:无法使用此上下文评估表达式 com.sun.org.apache.xpath.internal.XPath.execute(未知来源)在 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(未知来源) 在 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(未知 来源)在 Heandlers.HTTP.x(HTTP.java:74) 在 Views.Main.main(Main.java:15) 引起:java.lang.RuntimeException: 无法使用此上下文评估表达式 com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(未知 来源)在 com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(未知 来源)... 5 更多 --------- java.lang.RuntimeException:无法使用此上下文评估表达式 com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(未知 来源)在 com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(未知 来源)在 com.sun.org.apache.xpath.internal.XPath.execute(未知 来源)在 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(未知来源) 在 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(未知 来源)在 Heandlers.HTTP.x(HTTP.java:74) 在 Views.Main.main(Main.java:15) --------------- 链接到 ------------------ javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException:无法评估 使用此上下文的表达式 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(未知 来源)在 Heandlers.HTTP.x(HTTP.java:74) 在 Views.Main.main(Main.java:15) 原因: javax.xml.transform.TransformerException:无法评估 使用此上下文的表达式 com.sun.org.apache.xpath.internal.XPath.execute(未知来源)在 com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(未知来源) ... 3 更多原因:java.lang.RuntimeException:无法评估 使用此上下文的表达式 com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(未知 来源)在 com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(未知 来源)...还有 5 个状态=
有什么建议吗?
【问题讨论】: