Bonjour,
J'utilise SoapUi 5.4.0 et en cherchant j'ai essayé de créer un script Groovy mais je suis bloqué.
Je souhaite récupérer tous les objets de ma réponse et les stocker dans un fichier.
Voici la réponse sur laquelle je me base:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ps:MessagePullReply xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <requestReceptionTime>2018-05-15 17:59:50</requestReceptionTime> <requestId>9126093</requestId> <sendTime>2018-05-15 17:59:50</sendTime> <status>OK</status> <data> <marshalledMessages> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>197e9f71-a43f-42e9-bb9f-b89f980a916d</uuid><timestamp>2018-05-15 17:54:54 094</timestamp><subscriptionUuid>412134bd-9c3e-45c7-bded-f1f438bf057e</subscriptionUuid><parentMessageId>20180515175451E395948V1</parentMessageId></ps:DataMessage>]]></item> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>7018e927-38ba-4c86-950f-fcec9b44edb9</uuid><timestamp>2018-05-15 17:54:55 092</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175454E385799V93</parentMessageId></ps:DataMessage>]]></item> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>e9d7ed1c-ecef-48d1-8cd8-13244ce58d46</uuid><timestamp>2018-05-15 17:54:59 788</timestamp><subscriptionUuid>412134bd-9c3e-45c7-bded-f1f438bf057e</subscriptionUuid><parentMessageId>20180515175458E390413V20</parentMessageId></ps:DataMessage>]]></item> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>f41f0490-3b5d-421d-bf13-fbc7b5c27be3</uuid><timestamp>2018-05-15 17:55:00 162</timestamp><subscriptionUuid>412134bd-9c3e-45c7-bded-f1f438bf057e</subscriptionUuid><parentMessageId>20180515175459E389396V33</parentMessageId></ps:DataMessage>]]></item> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>2115e7d4-30a9-4569-879e-488699c611eb</uuid><timestamp>2018-05-15 17:55:06 137</timestamp><subscriptionUuid>412134bd-9c3e-45c7-bded-f1f438bf057e</subscriptionUuid><parentMessageId>20180515175505E388496V37</parentMessageId></ps:DataMessage>]]></item> <item><![CDATA[<ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage>]]></item> </marshalledMessages> <hasMoreMessages>true</hasMoreMessages> </data> </ps:MessagePullReply> </S:Body> </S:Envelope>
Voici le script que j'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import javax.xml.parsers.*; import javax.xml.xpath.*; import org.w3c.dom.*; import java.util.* import java.io.*; def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context) def reponse = groovyUtils.getXmlHolder( testRunner.testCase.testSteps["pullMessages"].testRequest.response.getContentAsXml()); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("C:/Users/Clem/Documents/test.xml", true))); StringBuilder sb = new StringBuilder(); def items = reponse.getDomNodes("//*:item"); def itemsCount = items.length; items.each{it->item = it.firstChild.nodeValue.trim(); sb.append(item);} for(def i = 1; i < itemsCount+1;i++){ def node = reponse.getDomNodes("//*:item["+i+"]/*"); node.each{ it -> sb.append(it.firstChild.nodeValue.trim());} pw.println(sb.toString()); sb = new StringBuilder(); sb.append(item); } pw.close();
Voici ce que je trouve dans mon fichier test.xml:
J'ai donc le premier résultat que je souhaite puis 5 fois le dernier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>197e9f71-a43f-42e9-bb9f-b89f980a916d</uuid><timestamp>2018-05-15 17:54:54 094</timestamp><subscriptionUuid>412134bd-9c3e-45c7-bded-f1f438bf057e</subscriptionUuid><parentMessageId>20180515175451E395948V1</parentMessageId></ps:DataMessage> <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage> <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage> <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage> <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage> <ps:DataMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><uuid>eceff4e7-f737-47b3-86c3-36abc9ea0681</uuid><timestamp>2018-05-15 17:55:06 782</timestamp><subscriptionUuid>1ed22a1e-0983-4cc1-b40d-631cf52dda3f</subscriptionUuid><parentMessageId>20180515175505E365026V57</parentMessageId></ps:DataMessage>
Qu'ai-je loupé pour ne pas récupérer les éléments intermédiaires ?
Merci d'avance pour vos réponses
Partager