Groovy operations trim() and replace() seems to doesn't work in Soapui
I tried to get rid of whitespaces and newlines with groovy.
But if I try this in Groovy, the resul is either a not trimed string, or an error (in the case of "replace()" )
String response = " <blub>\r\nBlaaaah asd\r\n<Blä /> asd asdsad \r\n asdasd asdasd</blub>" log.info("before trim: " + response) log.info("After replace1: " + response.trim() )Output is:
After replace1: <blub> Blaaaah asd <Blä /> asd asdsad asdasd asdasd</blub> */and with "replace" it also not work:
log.info("After replace2: " + response.replace("[\n\r]*", "" )and there just came a Error message:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script81.groovy: 11: unexpected token: @ line 11, column 63. sponse.replace("[\n\r]*", "" ) ^ org.codehaus.groovy.syntax.SyntaxException: unexpected token: @ line 11, column 63. at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:143) at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:111) at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:237) at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:167) at org.codehaus.groovy.control. .... */
Whats wrong here?
PS: I am using ReadyAPI 2.0.2
PPS: yes, I have also tried to do it with xpath "normalize-space()", but there I have another problem - the XML-Structure is lost... maybe I have to post another question about that...
Is this your actual response?
String response = " <blub>\r\nBlaaaah asd\r\n<Blä /> asd asdsad \r\n asdasd asdasd</blub>"
Or is should look like this?
String response = " <blub>\r\nBlaaaah asd\r\n<Blä/>asdasdsad \r\n asdasdasdasd</blub>"
Please confirm on this.. And both replace() and replaceAll() method works.. Trying putting correct regular expressions. See below code.
String response = " <blub>\r\nBlaaaah asd\r\n<Blä /> asd asdsad \r\n asdasd asdasd</blub>" log.info("before trim: " + response) log.info("After replace1: " + response.trim()) log.info("After replace2: " + response.replaceAll("(\r\n)", ""))
This is how output look like :-
- Mon Feb 19 22:19:57 IST 2018:INFO:before trim: Blaaaah asd <Blä /> asd asdsad asdasd asdasd
- Mon Feb 19 22:19:57 IST 2018:INFO:After replace1: Blaaaah asd <Blä /> asd asdsad asdasd asdasd
- Mon Feb 19 22:19:57 IST 2018:INFO:After replace2: Blaaaah asd<Blä /> asd asdsad asdasd asdasd
With replace() method:-
String response = " <blub>\r\nBlaaaah asd\r\n<Blä /> asd asdsad \r\n asdasd asdasd</blub>" log.info("before trim: " + response) log.info("After replace1: " + response.trim()) log.info("After replace2: " + response.replace("(\r\n)", ""))
Output:-
- Mon Feb 19 22:26:21 IST 2018:INFO:before trim: Blaaaah asd <Blä /> asd asdsad asdasd asdasd
- Mon Feb 19 22:26:21 IST 2018:INFO:After replace1: Blaaaah asd <Blä /> asd asdsad asdasd asdasd
- Mon Feb 19 22:26:21 IST 2018:INFO:After replace2: Blaaaah asd <Blä /> asd asdsad asdasd asdasd
And trim() in the sense you mean to remove the white spaces inside the String :-
Like this:- <blub>Blaaaahasd<Blä/>asdasdsadasdasdasdasd</blub> ..
To do this you need to use replaceAll() method like this:-
String response = " <blub>\r\nBlaaaah asd\r\n<Blä /> asd asdsad \r\n asdasd asdasd</blub>" log.info("After replace1: " + response.replaceAll("\\s+",""))
Output look like this:-
Mon Feb 19 22:33:48 IST 2018:INFO:After replace1: <blub>Blaaaahasd<Blä/>asdasdsadasdasdasdasd</blub>
Hope, it resolve your problem. :)