XML 文書のビジネス・オブジェクトへの変換

このセクションでは、XML データ・ハンドラーが XML 文書をビジネス・オブジェクトに変換する方法に関して次のことを説明します。

XML 文書の要件

XML データ・ハンドラーは、XML 文書について、次のことを前提としています。

直列化データの処理

XML 文書をビジネス・オブジェクトに変換する場合、XML データ・ハンドラーは、ビジネス・オブジェクトが XML 文書の構造に従い、ビジネス・オブジェクト定義の要件で説明されているビジネス・オブジェクト定義の要件に適合することを前提としています。ビジネス・オブジェクトに所定のエレメント名の属性が存在しない場合、XML データ・ ハンドラーはエラーを返します。

XML 文書をビジネス・オブジェクトに変換するために、XML データ・ハンドラーは次の手順を実行します。

  1. 呼び出し元コネクターが変換メソッドにビジネス・オブジェクトを引き渡すと、データ・ハンドラーはこのビジネス・オブジェクトを使用して処理を続行します。呼び出し元がビジネス・オブジェクトを引き渡さない 場合、データ・ハンドラーはビジネス・オブジェクト名を判別して、XML 文書内のデータを格納するビジネス・オブジェクトを作成します。

    ビジネス・オブジェクト名を判別するために、データ・ハンドラーはネーム・ハンドラーを起動します。 デフォルトのネーム・ハンドラーは、BOPrefix メタオブジェクト属性、アンダースコアー、および root エレメントの値を組み合わせて、トップレベル・ビジネス・オブジェクト名を作成します。 例えば、XML 文書に <!DOCTYPE Customer> が含まれ、BOPrefix 属性が MyApp であれば、名前は MyApp_Customer となります。別の動作を構成するカスタム・ネーム・ハンドラーを設定することができます。

  2. データ・ハンドラーは Parser メタオブジェクト属性の値を検索して、XML 文書の構文解析に使用する SAX パーサーを判別します。 XML データ・ハンドラーがどの SAX パーサーを使用するかについては、SAX パーサーを参照してください。データ・ハンドラーがパーサーの名前を判別する場合、パーサーをインスタンス化します。
  3. データ・ハンドラーは、イベント・ハンドラー (DTD に基づく XML 文書の場合は、エンティティー・リゾルバー) をパーサーに登録します。 イベント・ハンドラーは、各 XML エレメントと属性を処理するコールバック・メソッドです。
    注:
    エンティティー・リゾルバーは、DTD 文書内の外部エンティティー参照を処理します。 データ・ハンドラーが有効なクラス名を持つ EntityResolver オプションを見つけられないない場合は、com.crossworlds.DataHandlers.xml.DefaultEntityResolver を使用します。 このエンティティー・リゾルバーは、外部参照をすべて無視します。
  4. データ・ハンドラーは、パーサーを起動して XML 文書を構文解析します。
  5. ビジネス・オブジェクトが完了すると、データ・ハンドラーはビジネス・オブジェクトを呼び出し元に返します。

注:
XML 文書内で検索されたすべてのエレメントと属性について、データ・ハンドラーはビジネス・オブジェクト内で属性が検出されることを予期します。ビジネス・オブジェクト定義に所定のエレメントまたは属性名に関する属性がない場合、データ・ハンドラーはエラーを返します。この規則の例外は FIXED タイプの属性です。この属性は、ビジネス・オブジェクト定義では必要ありません。FIXED 属性がビジネス・オブジェクト定義に存在しない場合、FIXED 属性が XML 文書内で検出されても実行は停止しません。

Copyright IBM Corp. 2004