使用 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 過濾器一起使用的輪詢器。可選。 |