30.2. XML DSL
XML DSL 中的简单表达式
在 XML DSL 中,您可以通过将表达式放在一个简单元素中来使用 简单的
表达式。例如,定义要根据 foo
标头的内容执行过滤的路由:
<route id="simpleExample"> <from uri="seda:orders"/> <filter> <simple>${in.header.foo}</simple> <to uri="mock:fooOrders"/> </filter> </route>
其他占位符语法
有时,如果您启用了 Spring 属性占位符,或者 OSGi 蓝图占位符会发现 ${Expression}
语法 clashes with another property placeholders clashes。在这种情况下,您可以用替代语法消除占位符,$simple{Expression}
用于简单表达式。例如:
<simple>Hello $simple{in.header.name}, how are you?</simple>
自定义开始和访问令牌
在 XML 配置中,您可以通过覆盖 SimpleLanguage
实例来自定义开始和结束令牌(默认为{
和 }
)。例如,要将 start 和 end tokens 更改为 [
and ]
,在 XML 配置文件中定义一个新的 SimpleLanguage
an,如下所示:
<bean id="simple" class="org.apache.camel.language.simple.SimpleLanguage"> <constructor-arg name="functionStartToken" value="["/> <constructor-arg name="functionEndToken" value="]"/> </bean>
自定义 start 和 end 令牌会影响在类路径上共享相同的 camelcore
库的所有 Apache Camel 应用程序。例如,在 OSGi 服务器中,这可能会影响许多应用程序,而在 Web 应用程序(WAR 文件中)中,它只会影响 Web 应用程序本身。
XML DSL 中的空格和自动修剪
默认情况下,在 XML DSL 中自动修剪简单的表达式前和之后的空格。因此,使用周围空白的表达式:
<transform> <simple> data=${body} </simple> </transform>
自动修剪,使其等同于此表达式(不含空格):
<transform> <simple>data=${body}</simple> </transform>
如果要在表达式之前或之后包含换行符,您可以显式添加换行符,如下所示:
<transform> <simple>data=${body}\n</simple> </transform>
或者,您可以通过将 trim
属性设置为 false
来关闭自动修剪,如下所示:
<transform trim="false"> <simple>data=${body} </simple> </transform>