<setbody>:如何编码\ n?

时间:2016-02-29 13:05:13

标签: escaping apache-camel

想象你想在apache-camel的消息体中使用字符序列\n ... 我想最简单的方法是这样的:

\\n

不幸的是,<simple>将替换为换行符。逃避(camel-groovy)似乎无法在 :loop cls taskkill /F /IM Firefox.exe cls taskkill /F /IM crashreporter.exe cls TIMEOUT /T 5 start "" "C:\Program Files\Mozilla Firefox\firefox.exe" -no-remote -private-window http://google.com TIMEOUT /T 600 GOTO loop 标记中发挥作用...

知道如何解决这个问题吗?

PS:我不能使用Java-DSL,也希望避免使用characters()等其他依赖项。

3 个答案:

答案 0 :(得分:2)

如果你想使用一个常数体,你可以使用constant语言,不需要转义\ n:

<setBody>
  <constant>one line\nsecond line</constant>
</setBody>

我可能错了,但我认为今天(v2.16.2)不能用简单的语言引用反斜杠,以便做你想做的事。如果我查看org.apache.camel.language.simple.SimpleTokenizer的来源,\\不会被视为特殊字符。可能有一些解决方法,但应该很容易创建一个问题//使用此功能发送PR。

答案 1 :(得分:1)

我查看了Simple语言的骆驼来源。有受保护的allowEscape = true,但没有设置它的接口。当然,您可以继承它,并创建自己的Simple语言,覆盖此字段。

SimpleTokenizer您可以看到,使用当前实现无法构建\n字符串。

答案 2 :(得分:0)

我找到了一个解决方案 - 速度模板符合我的需求。