使用 XPath 过滤器
此组件定义了一个基于 XPath 的消息过滤器。内部这些组件使用一个 MessageFilter,它包装了 AbstractXPathMessageSelector 的一个实例。
有关更多详细信息,请参见 Filter。
要使用 XPath 过滤器,你必须至少提供一个 XPath 表达式,要么通过声明 xpath-expression 元素,要么通过在 xpath-expression-ref 属性中引用一个 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>
- 消息通道,用于发送被拒绝的消息。可选。 
- 基础 bean 定义的 ID。可选。 
- 该端点的接收消息通道。可选。 
- 在 XPath 评估结果和 - match-value之间应用的匹配类型。默认值为- exact。可选。
- 与 XPath 评估结果匹配的字符串值。如果你不设置此属性,则 XPath 评估必须产生一个布尔结果。可选。 
- 匹配过滤条件的消息所分发到的通道。可选。 
- 默认情况下,此属性设置为 - false,未匹配过滤条件的消息(即被拒绝的消息)将被静默丢弃。但是,如果设置为- true,消息拒绝将导致错误状态,并且异常将向上传播给调用者。可选。
- 引用要评估的 XPath 表达式实例。 
- 此子元素设置要评估的 XPath 表达式。如果你不包含此元素,则必须设置 - xpath-expression-ref属性。此外,只能包含一个- xpath-expression元素。
- 与 XPath 过滤器一起使用的轮询器。可选。