是否可以通过Spring DSL替换字符串中的双引号字符?

时间:2016-04-13 17:40:28

标签: regex apache-camel transform

是否可以通过Spring DSL替换字符串中的双引号字符?我在xml中有一个名称空间,我需要在发送到另一个端点之前将其删除。

从xml中删除以下字符串

xsi:schemaLocation="xxxxx"

我尝试使用简单的语言,它运行但它没有取代引用

<route>
<from uri="file:src/xmldata?noop=true"/>
<convertBodyTo type="java.lang.String"/>                                 
<setBody>
<simple>
{body.replaceAll("xsi:schemaLocation="xxxxx"","")}
</simple>
</setBody>  .  .  </route>`

2 个答案:

答案 0 :(得分:1)

在大多数情况下,当正则表达式匹配双引号或单引号时出现问题时,使用字符的十六进制表示就足够了:\u0022(或\x22,具体取决于语言/引擎)。

所以,使用

{body.replaceAll("xsi:schemaLocation=\u0022xxxxx\u0022","")}
                                     ^^^^^^     ^^^^^^ 

请注意,单引号可与\u0027(或\x27)匹配。我用一个很棒的网站来查找十六进制代码,这里是a link to the Unicode code converter

答案 1 :(得分:0)

在所有示例中,请注意:${body.},而不是 {body.}(对于那些只是寻找 XML 替换示例的人)