在Spring-Integration xpath-expression中使用三元运算符

时间:2014-07-25 07:47:43

标签: spring spring-integration

我正在使用Spring Integration并具有以下两种xml输入

第一个XML:

<businessArea>SomeValue</businessArea>

第二个XML:

<?xml version="1.0" encoding="UTF-8"?>
<businessArea>
   <Code>SomeValue</Code>
</businessArea>

现在,我想根据以下条件将商业区的值存储在标题中:

1)如果businessArea在第二个xml中没有子节点,例如<Code>,则businessArea的节点值应存储在标题中。

2)如果businessArea在第二个xml中有任何子节点,例如<Code>,那么空值应存储在标题中。

我目前正在使用以下表达式:

<int-xml:header name="businessArea"  xpath-expression="//businessArea"  evaluation-type="STRING_RESULT"  overwrite="true" />

但是,如果xml类似于我上面显示的第二个xml,则上面的表达式不会在标题中存储null值。 我想我需要在上面的表达式中使用三元运算符。任何人都可以建议一个解决我的问题的表达方式吗?

1 个答案:

答案 0 :(得分:3)

这是真的,XPath不是这样的运营商,但我们可以用SpEL克服它。感谢Spring Integration,我们开箱即用#xpath SpEL功能:

<int:header-enricher>
    <int:header name="businessArea" expression="#xpath(payload, '//Code', 'boolean') ? null : #xpath(payload, '/businessArea')/>
</int:header-enricher>