使用 XPath 过滤器
此组件定义了基于 XPath 的消息过滤器。在内部,这些组件使用一个包装了 AbstractXPathMessageSelector 实例的 MessageFilter。
| 有关更多详细信息,请参阅过滤器。 |
要使用 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上的equalsIgnoreCase方法。底层实现使用StringValueTestXPathMessageSelector -
regex:在java.lang.String上执行匹配操作。底层实现使用RegexTestXPathMessageSelector
当提供 'regex' 的 'match-type' 值时,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 过滤器一起使用的轮询器。可选。 |