Using the XPath Filter

此组件定义了一个基于 XPath 的消息过滤器。内部,这些组件使用一个包装 AbstractXPathMessageSelector 实例的 MessageFilter

有关详细信息,请参阅 Filter

要使用 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 属性一起提供的 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 过滤器一同使用轮询器。可选。