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