diff --git a/src/main/java/com/gmgauthier/soapmock/controllers/MockController.java b/src/main/java/com/gmgauthier/soapmock/controllers/MockController.java index 54f2f64..65cd55a 100644 --- a/src/main/java/com/gmgauthier/soapmock/controllers/MockController.java +++ b/src/main/java/com/gmgauthier/soapmock/controllers/MockController.java @@ -5,9 +5,18 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import java.io.IOException; +import java.io.StringReader; import java.nio.file.Files; import java.util.Objects; @@ -18,7 +27,18 @@ import java.util.Objects; public class MockController { @PostMapping(path ="/call1") - public String postCall1(@RequestBody String xmlRequestBody){ + public String postCall1(@RequestBody String xmlRequestBody) throws Exception { + Document xmlRequest = parseRequestBody(xmlRequestBody); + + Element root = xmlRequest.getDocumentElement(); + NodeList nodeList = root.getChildNodes(); + System.out.println(root.getNodeName()); + + for (int i = 0; i < nodeList.getLength(); i++){ + System.out.println(nodeList.item(i).getNodeName()); + System.out.println(nodeList.item(i).getNodeValue()); + } + return getStaticResponse("soap-example.xml"); } @@ -29,7 +49,9 @@ public class MockController { ClassLoader classLoader = getClass().getClassLoader(); try { - file = new File(Objects.requireNonNull(classLoader.getResource(filePath)).getFile()); + file = new File( + Objects.requireNonNull(classLoader + .getResource(filePath)).getFile()); } catch (NullPointerException e) { e.printStackTrace();} try { @@ -39,4 +61,13 @@ public class MockController { e.printStackTrace();} return content; } + + private Document parseRequestBody(String xmlRequestBody) throws Exception { + DocumentBuilderFactory dBfactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = dBfactory.newDocumentBuilder(); + Document document = + builder.parse(new InputSource(new StringReader(xmlRequestBody))); + document.getDocumentElement().normalize(); + return document; + } } diff --git a/src/main/resources/static/responses/soap-example.xml b/src/main/resources/static/responses/soap-example.xml index 297ae6e..47a3ef0 100644 --- a/src/main/resources/static/responses/soap-example.xml +++ b/src/main/resources/static/responses/soap-example.xml @@ -1,4 +1,4 @@ - +