第376章 XPath 言語
Camel バージョン 1.1 以降で利用可能
Camel は XPath をサポートして、式または述語を DSL または Xml 設定 で使用できるようにします。たとえば、XPath を使用して、メッセージフィルター で述語を作成したり受信者リストの式として使用したりできます。
ストリーム
メッセージボディーがストリームベースの場合、受信した入力はストリームとして Camel に送信されます。つまり、ストリームのコンテンツを 一度 だけ読み取ることができます。そのため、XPath を Message Filter またはコンテンツベースのルーターとして使用する場合に、データに複数回アクセスする必要があることが頻繁にあります。そのため、ストリームキャッシングを使用するか、メッセージボディーを安全に複数回再読み取りできる String
に変換する必要があります。
from("queue:foo"). filter().xpath("//foo")). to("queue:bar")
from("queue:foo"). choice().xpath("//foo")).to("queue:bar"). otherwise().to("queue:others");
376.1. XPath 言語オプション
XPath 言語は、以下に示す 9 個のオプションをサポートしています。
名前 | デフォルト | Java タイプ | 説明 |
---|---|---|---|
documentType |
| ドキュメントタイプのクラスの名前。デフォルト値は org.w3c.dom.Document です | |
resultType |
|
| 結果タイプ (出力からのタイプ) のクラス名を設定します。デフォルトの結果タイプは NodeSet です |
saxon |
|
| Saxon を使用するかどうか。 |
factoryRef |
| レジストリーを検索するためのカスタム XPathFactory を参照します | |
objectModel |
| 使用する XPath オブジェクトモデル | |
logNamespaces |
|
| トラブルシューティング時に役立つ名前空間をログに記録するかどうか |
headerName |
| メッセージボディーの代わりに入力として使用するヘッダーの名前 | |
threadSafety |
|
| xpath 式の返された結果に対してスレッドセーフを有効にするかどうか。これは、NODESET を結果の型として使用し、返されたセットに複数の要素がある場合に適用されます。この状況で、並列処理モードの Camel Splitter EIP などから NODESET を同時に処理すると、スレッドセーフの問題が発生する可能性があります。このオプションは、ノードの防衛的コピーを実行して、同時実行の問題を防ぎます。アプリケーションで camel-saxon または Saxon を使用している場合は、このオプションをオンにすることを推奨します。Saxon には、このオプションをオンにすることで防止できるスレッドセーフの問題があります。 |
trim |
|
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか |