使用 XPath 过滤器
此组件定义了一个基于 XPath 的消息过滤器。
在内部,这些组件使用一个 MessageFilter
,它封装了一个 AbstractXPathMessageSelector
实例。
有关更多详细信息,请参阅 过滤器。 |
要使用 XPath 过滤器,您至少必须通过声明 xpath-expression
元素或通过引用 xpath-expression-ref
属性中的 XPath 表达式来提供一个 XPath 表达式。
如果提供的 XPath 表达式评估为 boolean
值,则无需进一步的配置参数。
但是,如果 XPath 表达式评估为 String
,则应设置 match-value
属性,评估结果将与该属性进行匹配。
match-type
有三个选项:
-
exact
: 对应于java.lang.String
上的equals
。 底层实现使用StringValueTestXPathMessageSelector
-
case-insensitive
: 对应于java.lang.String
上的equals-ignore-case
。 底层实现使用StringValueTestXPathMessageSelector
-
regex
: 匹配java.lang.String
上的操作。 底层实现使用RegexTestXPathMessageSelector
当提供 'regex' 的 'match-type' 值时,通过 match-value
属性提供的值必须是有效的正则表达式。
以下示例显示了 xpath-filter
元素的所有可用属性:
<int-xml:xpath-filter discard-channel="" [id="CO1-1"]1
id="" [id="CO1-2"]2
input-channel="" [id="CO1-3"]3
match-type="exact" [id="CO1-4"]4
match-value="" [id="CO1-5"]5
output-channel="" [id="CO1-6"]6
throw-exception-on-rejection="false" [id="CO1-7"]7
xpath-expression-ref=""> [id="CO1-8"]8
<int-xml:xpath-expression ... /> [id="CO1-9"]9
<int:poller ... /> [id="CO1-10"]10
</int-xml:xpath-filter>
<1> 您希望将拒绝的消息发送到的消息通道。 可选。 <1> 底层 bean 定义的 ID。 可选。 <1> 此端点的接收消息通道。 可选。 <1> 在 XPath 评估结果和 `match-value` 之间应用的匹配类型。 默认值为 `exact`。 可选。 <1> 与 XPath 评估结果匹配的字符串值。 如果您不设置此属性,XPath 评估必须产生布尔结果。 可选。 <1> 符合过滤器条件的消息被分派到的通道。 可选。 <1> 默认情况下,此属性设置为 `false`,被拒绝的消息(不符合过滤器条件的那些)会被静默丢弃。 但是,如果设置为 `true`,消息拒绝会导致错误情况,并将异常传播到上游调用者。 可选。 <1> 对要评估的 XPath 表达式实例的引用。 <1> 此子元素设置要评估的 XPath 表达式。 如果您不包含此元素,则必须设置 `xpath-expression-ref` 属性。 此外,您只能包含一个 `xpath-expression` 元素。 <1> 与 XPath 过滤器一起使用的轮询器。 可选。