跳到主要内容
版本:7.0.2

使用 XPath 过滤器

DeepSeek V3 中英对照 Using the XPath Filter

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

备注

更多详情请参阅 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 过滤器一起使用的轮询器。可选。