使用 XPath 篩選器

此元件定義了基於 XPath 的訊息篩選器。在內部,這些元件使用封裝了 AbstractXPathMessageSelector 實例的 MessageFilter

請參閱 篩選器 以取得更多詳細資訊。

要使用 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 篩選器搭配使用的 Poller。 選用。