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

読み取りまたは書き込みのために、パーサーが入力ビット・ストリームから作成するツリーにあるエレメントの構造および配置を使用して、メッセージの内容にアクセスします。

ツリーの最上部から下方に向かって、必要なエレメントに達するまで関連する親と子の関係をたどります。

メッセージ・ツリーは、JavaCompute ノードに evaluate メソッドの引数として渡されます。引数は、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 コードは、空白が含まれない XML メッセージ用の論理ツリー内の章エレメントにアクセスします。XML パーサーは解析されたツリーの空白を保存しますが、XMLNS パーサーと XMLNSC パーサーは保存しません。
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

エレメントについての情報へのアクセス

以下のメソッドを使用して、参照先エレメントについての情報を戻します。
getName()
エレメント名を java.lang.String として戻します。
getValue()
エレメント値を戻します。
getType()
以下のいずれかの総称タイプを戻します。
  • NAME: このタイプのエレメントには名前はありますが、値はありません。
  • VALUE: このタイプのエレメントには値はありますが、名前はありません。
  • NAME/VALUE: このタイプのエレメントには、値および名前の両方があります。
getSpecificType()
エレメントのパーサー固有のタイプを戻します。
getNamespace()
このエレメントのネーム・スペース URI を戻します。
関連タスク
Java の記述
関連資料
JavaCompute ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:43:02

ac30330_