第375章 XPath 言語

Camel バージョン 1.1 以降で利用可能

Camel は XPath をサポートして、式または述語を DSL または Xml 設定 で使用できるようにします。たとえば、XPath を使用して、メッセージフィルター で述語を作成したり受信者リストの式として使用したりできます。

ストリーム

メッセージボディーがストリームベースの場合、受信した入力はストリームとして Camel に送信されます。つまり、ストリームのコンテンツを 一度 だけ読み取ることができます。そのため、XPathMessage Filter またはコンテンツベースのルーターとして使用する場合に、データに複数回アクセスする必要があることが頻繁にあります。そのため、ストリームキャッシングを使用するか、メッセージボディーを安全に複数回再読み取りできる String に変換する必要があります。

from("queue:foo").
  filter().xpath("//foo")).
  to("queue:bar")
from("queue:foo").
  choice().xpath("//foo")).to("queue:bar").
  otherwise().to("queue:others");

375.1. XPath 言語オプション

XPath 言語は、以下に示す 9 個のオプションをサポートしています。

名前デフォルトJava タイプ説明

documentType

 

String

ドキュメントタイプのクラスの名前。デフォルト値は org.w3c.dom.Document です

resultType

NODESET

String

結果タイプ (出力からのタイプ) のクラス名を設定します。デフォルトの結果タイプは NodeSet です

saxon

false

Boolean

Saxon を使用するかどうか。

factoryRef

 

String

レジストリーを検索するためのカスタム XPathFactory を参照します

objectModel

 

String

使用する XPath オブジェクトモデル

logNamespaces

false

Boolean

トラブルシューティング時に役立つ名前空間をログに記録するかどうか

headerName

 

String

メッセージボディーの代わりに入力として使用するヘッダーの名前

threadSafety

false

Boolean

xpath 式の返された結果に対してスレッドセーフを有効にするかどうか。これは、NODESET を結果の型として使用し、返されたセットに複数の要素がある場合に適用されます。この状況で、並列処理モードの Camel Splitter EIP などから NODESET を同時に処理すると、スレッドセーフの問題が発生する可能性があります。このオプションは、ノードの防衛的コピーを実行して、同時実行の問題を防ぎます。アプリケーションで camel-saxon または Saxon を使用している場合は、このオプションをオンにすることをお勧めします。Saxon には、このオプションをオンにすることで防止できるスレッドセーフの問題があります。

trim

true

Boolean

値をトリミングして、先頭および末尾の空白と改行を削除するかどうか