使用 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 过滤器一起使用的轮询器。
可选。