Java Soap请求 – 读取soap响应

我试图从webservice获得的响应中获取特定值。 不幸的是我不知道该怎么做。 我使用stackoverflow上的代码创建soap请求并将响应内容写入stdout:

private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception { TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); Source sourceContent = soapResponse.getSOAPPart().getContent(); System.out.print("\nResponse SOAP Message = "); StreamResult result = new StreamResult(System.out); transformer.transform(sourceContent, result); } 

一切运作良好,但我不需要整个响应内容:

       ? ?      

我只需要从这个响应中获得代码和描述的价值。 我怎样才能做到这一点?

以下是其他一些xml示例的完整工作示例;

 public static void main(String[] args) throws IOException, SOAPException { String xmlInput = " \n" + " \n" + " \n" + " \n" + " 100  \n" + " \n" + " \n" + " \n" + " %CITY%\n" + " \n" + " \n" + " "; MessageFactory factory = MessageFactory.newInstance(); SOAPMessage message = factory.createMessage( new MimeHeaders(), new ByteArrayInputStream(xmlInput.getBytes(Charset .forName("UTF-8")))); SOAPBody body = message.getSOAPBody(); NodeList returnList = body.getElementsByTagName("web:RES"); boolean isSuccess = false; for (int k = 0; k < returnList.getLength(); k++) { NodeList innerResultList = returnList.item(k).getChildNodes(); for (int l = 0; l < innerResultList.getLength(); l++) { if (innerResultList.item(l).getNodeName() .equalsIgnoreCase("web:RETURNCODE")) { isSuccess = Integer.valueOf(innerResultList.item(l) .getTextContent().trim()) == 100 ? true : false; } } } if (isSuccess) { NodeList list = body.getElementsByTagName("web:GetWeather"); for (int i = 0; i < list.getLength(); i++) { NodeList innerList = list.item(i).getChildNodes(); for (int j = 0; j < innerList.getLength(); j++) { System.out.println(innerList.item(j).getNodeName()); System.out.println(innerList.item(j).getTextContent()); } } } } 

如果你需要import;

  • java.io.ByteArrayInputStream中;
  • java.io.IOException的;
  • java.nio.charset.Charset中;
  • javax.xml.soap.MessageFactory;
  • javax.xml.soap.MimeHeaders;
  • javax.xml.soap.SOAPBody;
  • javax.xml.soap.SOAPException;
  • javax.xml.soap.SOAPMessage;
  • org.w3c.dom.NodeList;