Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第168章 StAX
StAX Component リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.9 以降で利用可能
StAX コンポーネントを使用すると、SAX ContentHandler を介してメッセージを処理できます。このコンポーネントのもう 1 つの機能は、Splitter EIP を使用する JAXB レコードの反復を可能にすることです。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
stax:content-handler-class
stax:content-handler-class
例:
stax:org.superbiz.FooContentHandler
stax:org.superbiz.FooContentHandler
Camel 2.11.1 以降では、以下のように # 構文を使用して、レジストリーから
org.xml.sax.ContentHandler
Bean を検索できます。
stax:#myHandler
stax:#myHandler
コンテンツハンドラーを StAX パーサーとして使用する リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
処理後のメッセージボディーはハンドラー自体です。
以下に例を示します。
JAXB および StAX を使用してコレクションを繰り返し処理します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
最初に JAXB オブジェクトがあるとします。
たとえば、ラッパーオブジェクトのレコード一覧は以下のようになります。
および
次に、処理する XML ファイルを取得します。
StAX コンポーネントは、Camel Splitter で XML 要素を反復処理する際に使用できる
StAXBuilder
を提供します。
from("file:target/in") .split(stax(Record.class)).streaming() .to("mock:records");
from("file:target/in")
.split(stax(Record.class)).streaming()
.to("mock:records");
stax
は、Java コードで静的インポートできる org.apache.camel.component.stax.StAXBuilder
の静的メソッドです。stax ビルダーは、デフォルトで、それが使用する XMLReader を認識します。Camel 2.11.1 以降では、以下のようにブール値パラメーターを false に設定するとこの機能をオフにできます。
from("file:target/in") .split(stax(Record.class, false)).streaming() .to("mock:records");
from("file:target/in")
.split(stax(Record.class, false)).streaming()
.to("mock:records");
XML DSL を使用した前述の例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
上記の例は、XML DSL で以下のように実装できます。