code_junkie

JAXM soap message parsing

Nov 12th, 2011
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  5. <soap:Body>
  6. <validateCredentialsResponse
  7. xmlns="http://www.paragon.com/positionmonitor/PositionMonitor">
  8. <validateCredentialsResult>
  9. <ResultData xsi:type="ValidateCredentialsResultData">
  10. <validated>true</validated>
  11. <alreadyLoggedIn>false</alreadyLoggedIn>
  12. </ResultData>
  13. <Status>
  14. <Condition xmlns="">SUCCESS</Condition>
  15. <ErrorCode xmlns="">BO.00000</ErrorCode>
  16. <ErrorDesc xmlns="">OK</ErrorDesc>
  17. </Status>
  18. </validateCredentialsResult>
  19. </validateCredentialsResponse>
  20. </soap:Body>
  21. </soap:Envelope>
  22.  
  23. SOAPEnvelope env = reply.getSOAPPart().getEnvelope();
  24.  
  25. import java.io.ByteArrayInputStream;
  26. import java.io.IOException;
  27. import java.nio.charset.Charset;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30.  
  31. import javax.xml.soap.MessageFactory;
  32. import javax.xml.soap.MimeHeaders;
  33. import javax.xml.soap.SOAPBody;
  34. import javax.xml.soap.SOAPException;
  35. import javax.xml.soap.SOAPMessage;
  36.  
  37. import org.w3c.dom.Element;
  38. import org.w3c.dom.Node;
  39. import org.w3c.dom.NodeList;
  40.  
  41. public class Jaxm {
  42.  
  43. private static List<Element> elements(NodeList nodes) {
  44. List<Element> result = new ArrayList<Element>(nodes.getLength());
  45. for (int i = 0; i < nodes.getLength(); i++) {
  46. Node node = nodes.item(i);
  47. if (node instanceof Element)
  48. result.add((Element)node);
  49. }
  50. return result;
  51. }
  52.  
  53. private static Element named(Element elem, String name) {
  54. if (!elem.getNodeName().equals(name))
  55. throw new IllegalArgumentException("Expected " + name + ", got " + elem.getNodeName());
  56. return elem;
  57. }
  58.  
  59. @SuppressWarnings("unchecked")
  60. public static void main(String[] args) throws IOException, SOAPException {
  61. String xml = "<?xml version="1.0" encoding="utf-8"?>rn" +
  62. "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" rn" +
  63. " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" rn" +
  64. " xmlns:xsd="http://www.w3.org/2001/XMLSchema">rn" +
  65. " <soap:Body>rn" +
  66. " <validateCredentialsResponse rn" +
  67. " xmlns="http://www.paragon.com/positionmonitor/PositionMonitor">rn" +
  68. " <validateCredentialsResult>rn" +
  69. " <ResultData xsi:type="ValidateCredentialsResultData">rn" +
  70. " <validated>true</validated>rn" +
  71. " <alreadyLoggedIn>false</alreadyLoggedIn>rn" +
  72. " </ResultData>rn" +
  73. " <Status>rn" +
  74. " <Condition xmlns="">SUCCESS</Condition>rn" +
  75. " <ErrorCode xmlns="">BO.00000</ErrorCode>rn" +
  76. " <ErrorDesc xmlns="">OK</ErrorDesc>rn" +
  77. " </Status>rn" +
  78. " </validateCredentialsResult>rn" +
  79. " </validateCredentialsResponse>rn" +
  80. " </soap:Body>rn" +
  81. "</soap:Envelope>rn" +
  82. "";
  83. MessageFactory factory = MessageFactory.newInstance();
  84. SOAPMessage msg = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(xml.getBytes(Charset.forName("UTF-8"))));
  85. msg.saveChanges();
  86. SOAPBody soapBody = msg.getSOAPBody();
  87. for (Element response : elements(soapBody.getElementsByTagName("validateCredentialsResponse"))) {
  88. for (Element result : elements(response.getElementsByTagName("validateCredentialsResult"))) {
  89. List<Element> children = elements(result.getChildNodes());
  90. Element resultData = named(children.get(0), "ResultData");
  91. List<Element> resultDataChildren = elements(resultData.getChildNodes());
  92. boolean validated = Boolean.getBoolean(named(resultDataChildren.get(0), "validated").getTextContent());
  93. boolean alreadyLoggedIn = Boolean.getBoolean(named(resultDataChildren.get(1), "alreadyLoggedIn").getTextContent());
  94. Element status = named(children.get(1), "Status");
  95. List<Element> statusChildren = elements(status.getChildNodes());
  96. String condition = named(statusChildren.get(0), "Condition").getTextContent();
  97. String errorCode = named(statusChildren.get(1), "ErrorCode").getTextContent();
  98. String errorDesc = named(statusChildren.get(2), "ErrorDesc").getTextContent();
  99.  
  100. System.out.printf("validated=%s alreadyLoggedIn=%s condition=%s errorCode=%s errorDesc=%sn", validated, alreadyLoggedIn, condition, errorCode, errorDesc);
  101. }
  102. }
  103. }
  104. }
Add Comment
Please, Sign In to add comment