この章の内容は次のとおりです。
Java Architecture for XML Binding(JAXB)は、XMLデータとJavaオブジェクト間をマップするAPIとツールから構成されています。これは、JCP(Java Community Process)の推奨によるJSR-31「The Java Architecture for XML Binding (JAXB)」バージョン1.0を実装しています。JSRは、JCPのJava Specification Requestです。
JAXBコンパイラでは、XML Schemaに対応するインタフェースおよび実装クラスを生成します。このクラスを使用して、XML文書の読取り、操作および再作成が可能です。JAXBコンパイラでは、XML Schemaに対応するJavaクラスと、XMLデータへのアクセスに必要なインタフェースを生成します。Javaクラスは拡張可能で、基礎となるXMLデータ構造に関する特別な知識がなくてもXMLデータにアクセスできます。
注意:
|
XMLデータのオブジェクト・バインディング機能を使用するには、新しいアプリケーションではJAXB Class Generatorを使用するよう求められます。現在、Oracle9i Class Generator for Javaは使用されていません。ただし、Oracle9i Class Generatorランタイムはリリース10.1に含まれており、10.xリリースの期間はサポートされます。
アンマーシャリングとは、XML文書からJavaによって生成されたクラス・オブジェクトにデータを移動することと定義されています。各オブジェクトは、入力文書内のスキーマ・コンポーネントのインスタンスから導出されます。DTDには継承の弱点があるため、JAXBではサポートされませんが、DTDをJAXBで使用されるXML Schemaに変換できます。
マーシャリングとは、Javaクラスのインスタンスのコンテンツ・ツリーを全検索することによって、JavaオブジェクトからXML文書を作成することと定義されています。
検証とは、コンテンツがJava表現で変更する場合のマーシャリングの前提条件です。検証では、コンテンツ・ツリーがスキーマで定義された制約を満たしているかどうかを検証します。ツリーは、ツリーをマーシャリングする際にソース・スキーマに従って有効なXML文書が生成されるときに、有効であると定義されます。アンマーシャリングにエラーのない検証が含まれる場合、その入力文書とコンテンツ・ツリーは有効です。ただし、アンマーシャリング時の検証は不要です。
検証は次の状況で実行されます。
アンマーシャリング時検証では、アンマーシャリング時のエラーおよび警告がアプリケーションに通知されます。
オンデマンド検証は、アプリケーションによって開始された場合、Javaコンテンツ・ツリーに対して実行されます。
フェイルファスト検証は、即時結果を戻します。
JAXBアプリケーションを構築するには、XML Schemaファイルで開始します。次の手順を実行してJAXBアプリケーションを構築して使用します。
XML Schemaファイルをバインディング・コンパイラに発行して、Javaソース・ファイルを生成します。orajaxb
と呼ばれるコマンドライン・ユーティリティを介して、バインディング・コンパイラを起動できます。
JDK 1.3以上を使用してJavaソース・コードをコンパイルします。
クラスとバインディング・フレームワークを使用して、Javaアプリケーションを次のように作成します。
ドキュメントからデータをアンマーシャリングするか、作成したクラスをインスタンス化することで、XML Schemaに対して有効なXMLデータを表すオブジェクト・ツリーを構築する。
データにアクセスし変更する。
オプションで、XML Schemaで表現された制約と比較し、データへの変更を検証する。
データを新規XML文書にマーシャリングする。
Oracleリリースは、次の機能をサポートしていません。
Javadocの生成。
XML SchemaのList
機能とUnion
機能。
SimpleType
の、TypeSafe Enum
クラスとIsSet
プロパティの修飾子へのマッピング。
XML Schemaコンポーネント"any"および置換グループ。
XML SchemaコンポーネントのデフォルトのバインディングをオーバーライドするXML Schemaのカスタマイズ。
コンテンツ・ツリーのオンデマンド検証。
JAXB Class Generatorコマンドライン・インタフェースには、次の方法でアクセスします。
oracle.xml.jaxb.orajaxb [-options]
表6-1に、オプションを示します。
次に、JAXBの特長の概要を示します。
次の場合にJAXBを使用します。
メモリー内のデータにアクセスするが、DOMツリーの操作機能が必要ではない場合。
XMLデータのオブジェクト表現を構築する場合。
関連資料:
|
特定のXMLプロセッサの実装に依存しないAPIを使用して、アプリケーションでXML文書の解析および変換を可能にするJava API for XML Processing(JAXP)は、Oracleで実装されています。
次の場合にJAXPを使用します。
データへのアクセス方法(SAXで順次アクセスするか、DOMでメモリー内をランダムにアクセスするか)に柔軟性が必要な場合。
異なるスキーマに基づいて、ドキュメントで同じ処理コードを使用する場合。
必ずしも有効ではないドキュメントを解析する場合。
XSLT変換を適用する場合。
XMLデータを表すオブジェクト・ツリーからオブジェクトを挿入または削除する場合。