XPATH没有为Java中的SOAP响应进行编译

时间:2015-08-12 16:56:38

标签: java xpath soap

给出路​​径时给出Java错误的Xpath和soapResponse消息是XML。

    //Get Soap list for the the field Specified
    //List<String> list = new ArrayList<String>();
    XPath xpath = XPathFactory.newInstance().newXPath();



    String name = (String) xpath.evaluate("//HOSTNAME/text()",soapResponse, XPathConstants.STRING);
//  Node resultNode = (Node) xpath.evaluate("/soapenv:Envelope[@xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/']/soapenv:Body/QueryTCXALOOKUPResponse[@xmlns='http://www.ibm.com/maximo']/TCXALOOKUPSet/PERSON/TCXALOOKUPVIEW/HOSTNAME", soapResponse, XPathConstants.NODE);
    System.out.println(name);
//Close the connection to be safe
    soapConnection.close();

错误消息

SEVERE: Servlet.service() for servlet [jsp] in context with path [/wsdlTest] threw exception [javax.servlet.ServletException:
javax.xml.xpath.XPathExpressionException:
javax.xml.transform.TransformerException: Unable to evaluate expression using this context] with root cause
java.lang.RuntimeException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(Unknown Source)
at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(Unknown Source)
at com.sun.org.apache.xpath.internal.XPath.execute(Unknown Source)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(Unknown Source)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(Unknown Source)
at wsdlTest.test.main(test.java:65)
at org.apache.jsp.MyIT_jsp._jspService(MyIT_jsp.java:100)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:431)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

1 个答案:

答案 0 :(得分:0)

我决定退出XPATH并使用通用的Oracle soap解析器构建解析器。仍不太确定Xpath的问题是什么,但也许这是一个可变问题。我试图抓取的变量是一个文本节点。 soapResponse变量是来自外部POST的返回soapmessage。

由于