在过滤器中介中使用XPath函数

时间:2013-02-21 11:03:43

标签: xpath wso2 wso2esb synapse

在我的代理的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

如何使这些功能起作用?

2 个答案:

答案 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)">

这适合我。