0

在代理的 inSequence 中,我在filter mediator中使用 xpath 查询进行过滤。但我想使用 XPath 函数,如exists()or count()。但这不起作用,并且总是会产生异常。这是我的例子:

<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

我怎样才能使这些功能起作用?

4

2 回答 2

2

您可以将 xpath 函数与过滤器调解器一起使用来修改突触段,如下所示。

<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

谢谢你,达沙纳

于 2013-02-21T11:27:52.287 回答
0

对于那些想知道如何使用 fn:count 的人,您可以尝试:

<property name="itemCount" expression="fn:count(//*[local-name()='item'])"/>
<filter xpath="fn:number(get-property('itemCount')) > fn:number(0)">

这对我有用。

于 2014-01-16T13:46:20.650 回答