我正在使用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值。 我想我需要在上面的表达式中使用三元运算符。任何人都可以建议一个解决我的问题的表达方式吗?
答案 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>