是否可以通过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>`
答案 0 :(得分:1)
在大多数情况下,当正则表达式匹配双引号或单引号时出现问题时,使用字符的十六进制表示就足够了:\u0022
(或\x22
,具体取决于语言/引擎)。
所以,使用
{body.replaceAll("xsi:schemaLocation=\u0022xxxxx\u0022","")}
^^^^^^ ^^^^^^
请注意,单引号可与\u0027
(或\x27
)匹配。我用一个很棒的网站来查找十六进制代码,这里是a link to the Unicode code converter。
答案 1 :(得分:0)
在所有示例中,请注意:${body.}
,而不是 {body.}
(对于那些只是寻找 XML 替换示例的人)