我有配置文件中的xml數據我想發佈,我需要一些動態部分在這個XML,如UUID,當前日期...用java中的代碼執行結果替換字符串中的代碼執行結果像在SoapUI
在了SoapUI我可以使用Groovy腳本直接在這樣的XML裏面:
<?xml version='1.0' encoding='utf-8'?>
<Envelope>
<Body>
<date>${=new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX\).format(new Date())}</date>
<uddi>${=java.util.UUID.randomUUID()}</uddi>
<Body>
<Envelope>
我得到這個
<?xml version='1.0' encoding='utf-8'?>
<Envelope>
<Body>
<date>2016-04-07T15:29:43.729+02:00</date>
<uddi>5f8020d3-1fe0-4755-8056-cdef536c98b9</uddi>
<Body>
<Envelope>
我tryed與此代碼,並將其用於UUID的SimpleDa工作得很好,但不teFormat。
String sExecUUID = "\"UUID\" -> ${java.util.UUID.randomUUID()} !!!"; // OK : "UUID" -> 5f8020d3-1fe0-4755-8056-cdef536c98b9 !!!
String sExecDate = "\"Date\" -> ${new java.text.SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\").format(new Date())} !!!"; // KO
//String sExec = sExecUUID;
String sExec = sExecDate;
sExec = sExec.replace("\\","\\\\"); // Replace \ --> \\
sExec = sExec.replace("\n","\\n"); // Replace \n --> \\n
sExec = sExec.replace("\r","\\r"); // Replace \n --> \\n
sExec = sExec.replace("\"","\\\""); // Replace " --> \"
sExec = "println \""+sExec+"\"";
// call groovy expressions from Java code
GroovyShell shell = new GroovyShell();
Object value = shell.evaluate(sExec);
System.out.println(value);
的日期唯一的例外是:
org.codehaus.groovy.control.MultipleCompilationErrorsException: 啓動失敗:Script1.groovy:1:意外的字符: '\' @ 1號線, 列55. EW java.text.SimpleDateFormat中(\「YYYY-MM-
我知道這是因爲我在SimpleDateFormat的,而不是"
\"
但我必須逃離"
使用println
。
我該如何讓這個工作?
謝謝熱雷米,它的偉大工程! – Alex