使用 XPath 過濾器
此元件定義了一個基於 XPath 的訊息過濾器。在內部,這些元件使用一個 MessageFilter,它封裝了一個 AbstractXPathMessageSelector 例項。
| 有關更多詳細資訊,請參閱 過濾器。 |
要使用 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 屬性提供的值必須是有效的正則表示式。
以下示例顯示了 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 過濾器一起使用的輪詢器。可選。 |