在我的代理的inSequence中,我使用filter mediator中的xpath查询进行过滤。但我想使用像exists()
或count()
这样的XPath函数。但这不起作用,总是会产生异常。这是我的例子:
<filter xpath="count($body/myElement)>2">
<drop/>
</filter>
我总是得到例外:
ERROR - FilterMediator Error evaluating XPath expression : n:exists($body/avintis:Exception)
org.jaxen.UnresolvableException: No Such Function exists
如何使这些功能起作用?
答案 0 :(得分:2)
您可以将xpath函数与filter mediator一起用于修改synapse段,如下所示。
<filter xpath="fn:exists($body/myElement)">
<drop/>
</filter>
您可以参考样品156:服务集成,并指定[1]处可用的接收序列以获取更多样品。
<filter xpath="fn:number(get-property('SIMPLE_SER_AMT')) > fn:number(get-property('SECURE_SER_AMT'))">
[1]。 http://wso2.org/project/esb/java/4.0.3/docs/samples/proxy_samples.html
谢谢你, Dharshana
答案 1 :(得分:0)
对于那些想知道如何使用fn:count的人,你可以尝试:
<property name="itemCount" expression="fn:count(//*[local-name()='item'])"/>
<filter xpath="fn:number(get-property('itemCount')) > fn:number(0)">
这适合我。