使用 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

当提供 'match-type' 值为 'regex' 时,使用 match-value 属性提供的值必须是有效的正则表达式。

以下示例显示了 xpath-filter 元素的所有可用属性

<int-xml:xpath-filter discard-channel=""                      (1)
                      id=""                                   (2)
                      input-channel=""                        (3)
                      match-type="exact"                      (4)
                      match-value=""                          (5)
                      output-channel=""                       (6)
                      throw-exception-on-rejection="false"    (7)
                      xpath-expression-ref="">                (8)
    <int-xml:xpath-expression ... />                          (9)
    <int:poller ... />                                        (10)
</int-xml:xpath-filter>
1 您希望将拒绝的消息发送到的消息通道。可选。
2 底层 Bean 定义的 ID。可选。
3 此端点的接收消息通道。可选。
4 在 XPath 计算结果和 match-value 之间应用的匹配类型。默认值为 exact。可选。
5 要与 XPath 计算结果匹配的字符串值。如果您不设置此属性,则 XPath 计算必须产生布尔结果。可选。
6 将匹配过滤器条件的消息分派到的通道。可选。
7 默认情况下,此属性设置为 false,并且拒绝的消息(不匹配过滤器条件的消息)会被静默丢弃。但是,如果设置为 true,则消息拒绝会导致错误条件,并且异常会向上游传播到调用方。可选。
8 要评估的 XPath 表达式实例的引用。
9 此子元素设置要评估的 XPath 表达式。如果您不包含此元素,则必须设置 xpath-expression-ref 属性。此外,您只能包含一个 xpath-expression 元素。
10 要与 XPath 过滤器一起使用的轮询器。可选。