Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.このコンテンツは選択した言語では利用できません。
30.2. XML DSL
Simple expressions in XML DSL
In the XML DSL, you can use a simple expression by putting the expression inside a
simple
element. For example, to define a route that performs filtering based on the contents of the foo
header:
<route id="simpleExample"> <from uri="seda:orders"/> <filter> <simple>${in.header.foo}</simple> <to uri="mock:fooOrders"/> </filter> </route>
Alternative placeholder syntax
Sometimes—for example, if you have enabled Spring property placeholders or OSGi blueprint property placeholders—you might find that the
${Expression}
syntax clashes with another property placeholder syntax. In this case, you can disambiguate the placeholder using the alternative syntax, $simple{Expression}
, for the simple expression. For example:
<simple>Hello $simple{in.header.name}, how are you?</simple>
Customizing the start and end tokens
From XML configuration, you can customize the start and end tokens (
{
and }
, by default) by overriding the SimpleLanguage
instance. For example, to change the start and end tokens to [
and ]
, define a new SimpleLanguage
bean in your XML configuration file, as follows:
<bean id="simple" class="org.apache.camel.language.simple.SimpleLanguage"> <constructor-arg name="functionStartToken" value="["/> <constructor-arg name="functionEndToken" value="]"/> </bean>
Note
Customizing the start and end tokens affects all Apache Camel applications that share the same
camel-core
library on their classpath. For example, in an OSGi server this might affect many applications; whereas in a Web application (WAR file) it would affect only the Web application itself.
Whitespace and auto-trim in XML DSL
By default, whitespace preceding and following a simple expression is automatically trimmed in XML DSL. So this expression with surrounding whitespace:
<transform> <simple> data=${body} </simple> </transform>
is automatically trimmed, so that it is equivalent to this expression (no surrounding whitespace):
<transform> <simple>data=${body}</simple> </transform>
If you want to include newlines before or after the expression, you can either explicitly add a newline character, as follows:
<transform> <simple>data=${body}\n</simple> </transform>
or you can switch off auto-trimming, by setting the
trim
attribute to false
, as follows:
<transform trim="false"> <simple>data=${body} </simple> </transform>