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 } 语法与另一个属性占位符语法冲突,则有时可能会发现 ${Expression} 语法与其他属性占位符语法冲突。在这种情况下,您可以使用替代语法 $simple{Expression} 消除占位符,用于简单表达式。例如:

<simple>Hello $simple{in.header.name}, how are you?</simple>

自定义开始和结束令牌

在 XML 配置中,您可以通过覆盖 SimpleLanguage 实例来自定义启动和结束令牌(默认为{} )。例如,要将启动和结束令牌更改为 [],请在 XML 配置文件中定义一个新的 SimpleLanguage bean,如下所示:

<bean id="simple" class="org.apache.camel.language.simple.SimpleLanguage">
  <constructor-arg name="functionStartToken" value="["/>
  <constructor-arg name="functionEndToken" value="]"/>
</bean>
注意

自定义启动和结束令牌会影响所有在类路径上共享相同 camel-core 库的 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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.