我在WSO2 Developer studio中使用XPATH 2.0来对Payload Mediator中的数据执行一些转换。在一个转换中,我必须检查遗留服务响应中是否存在元素然后打印'是,它确实'否则'否,它没有'。
我使用以下语法。
if(fn:exists(//*/*[local-name()='HomePhone'])) then fn:concat('Yes','it does')
else fn:concat('No','it dont')
它给了我以下错误消息。
我对语法感到困惑。在我的特定场景中,在Xpath 2.0中使用If / else的正确方法是什么?
注意:“fn:concat”函数可以正常工作。
答案 0 :(得分:1)
我相信您正在尝试在ESB中实现一个synapse配置来实现If then ELSE closure
您需要使用过滤介体来实现这一点,这是ESB Synapse,
<filter source="fn:exists(//*/*[local-name()='HomePhone'])" regex="false">
<then>
<log level="custom">
<property name="*********" value="NULL Property Value"/>
</log>
</then>
<else>
<log level="custom">
<property name="*********" value="NOT NULL Property Value"/>
</log>
</else>
</filter>
请在[1]
上找到过滤器介体文档