JavaCompute ノードからメッセージ・ツリー内のエレメントへのアクセス

読み取りまたは書き込みのために、メッセージの内容にアクセスしたい場合には、 パーサーが入力ビット・ストリームから作成するツリーにあるエレメントの構造および配置を使用します。 ツリーの最上部から下方に向かって、必要なエレメントに達するまで関連する親と子の関係をたどります。

メッセージ・ツリーは、JavaCompute ノードに評価メソッドの引数として渡されます。 引数は、MbMessageAssembly オブジェクトです。 MbMessageAssembly には、以下の 4 つのメッセージ・オブジェクトが含まれます。
  • メッセージ (Message)
  • ローカル環境 (Local Environment)
  • グローバル環境 (Global Environment)
  • 例外リスト (Exception List)
Global Environment を除き、これらのオブジェクトは読み取り専用です。 読み取り専用のオブジェクトに対して書き込みを試行すると、MbReadOnlyException がスローされます。
このトピックには、メッセージ・ツリー内のエレメントへのアクセス方法に関する以下の情報が含まれています。

エレメント・ツリーの全探索

この表は、エレメント・ツリーへのアクセスに使用できる Java メソッド、 およびツリー内の各ポイントに対する同等の ESQL 相関名を示しています。
MbMessageAssembly からの Java アクセサー ESQL 相関名
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
以下のメソッドを使用して、タイプ MbElement のエレメントからメッセージ・ツリーを全探索できます。
getParent()
現行エレメントの親を戻します。
getPreviousSibling()
現行エレメントの直前の兄弟を戻します。
getNextSibling()
現行エレメントの次の兄弟を戻します。
getFirstChild()
現行エレメントの最初の子を戻します。
getLastChild()
現行エレメントの最後の子を戻します。

以下の例は、簡単な XML メッセージ、およびそのメッセージから作成される論理ツリーを示しています。 この例では、メッセージが WebSphere MQ を使用して送信されています。 論理ツリー図は、ツリー内をナビゲートするために呼び出されるメソッドも示しています。

<document>
  <chapter title='Introduction'>
    Some text.
  </chapter>
</document>

この図は、メッセージ・ツリー内をナビゲートするために
呼び出すことのできるメソッドを示しています。
ここで使用されるツリーは、このトピックで示された XML の例を構文解析して作成されたものです。
ツリーのルート部分から getFirstChild() を呼び出すと、「プロパティー」までナビゲートします。
同じくルートから、getLastChild() を呼び出すと XML が戻されます。
「プロパティー」から getParent() を呼び出すとルートが戻され、
getNextSibling() を呼び出すと MQMD が戻されます。
MQMD から getPreviousSibling() を呼び出すと「プロパティー」が戻され、
getParent() を呼び出すとルートが戻され、
getNextSibling() を呼び出すと XML が戻されます。
XML から getPreviousSibling() を呼び出すと MQMD が戻され、
getParent() を呼び出すとルートが戻され、
getFirstChild() を呼び出すと文書が戻され、
getLastChild() を呼び出すと同様に文書が戻されます。
文書から getParent() を呼び出すと XML が戻され、
getFirstChild() を呼び出すと章が戻され、
getLastChild() を呼び出すと同様に章が戻されます。
章から getParent() を呼び出すと文書が戻され、
getFirstChild() を呼び出すとタイトルが戻され、
getLastChild() を呼び出すとメッセージ・データ "Some text." を含む子が戻されます。

以下の Java コードは、論理ツリー内の章エレメントにアクセスします。
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

JavaCompute ノードを使用するエレメントについての情報へのアクセス

以下のメソッドを使用して、参照先エレメントについての情報を戻します。Java ユーザー定義ノード API は、これらのメソッドに関する詳細を提供します。
getName()
エレメント名を java.lang.String として戻します。
getValue()
エレメント値を戻します。
getType()
以下のいずれかの総称タイプを戻します。
  • NAME。 このタイプのエレメントには名前はありますが、値はありません。
  • VALUE。 このタイプのエレメントには値はありますが、名前はありません。
  • NAME/VALUE。 このタイプのエレメントには、値および名前の両方があります。
getSpecificType()
エレメントのパーサー固有のタイプを戻します。
getNamespace()
このエレメントのネーム・スペース URI を戻します。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac30330_