【问题标题】:Xpath - evaluate function returns javax.xml.transform.TransformerExceptionXpath - 评估函数返回 javax.xml.transform.TransformerException
【发布时间】: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 个状态=

有什么建议吗?

【问题讨论】:

    标签: java xml xpath


    【解决方案1】:

    听起来您使用的是无效的InputSource,例如org.w3c.css.sac.InputSource。确保您已导入 org.xml.sax.InputSource。

    【讨论】:

    • 在我的例子中是 import jdk.internal.org.xml.sax.InputSource 而不是 org.xml.sax.InputSource
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多