この章の内容は次のとおりです。
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スキーマに対応するインタフェースおよび実装クラスを生成します。このクラスを使用して、XML文書の読取り、操作および再作成が可能です。JAXBコンパイラでは、XMLスキーマに対応する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スキーマに変換できます。
マーシャリングとは、Javaクラスのインスタンスのコンテンツ・ツリーを全検索することによって、JavaオブジェクトからXML文書を作成することと定義されています。
検証とは、コンテンツがJava表現で変更する場合のマーシャリングの前提条件です。検証では、コンテンツ・ツリーがスキーマで定義された制約を満たしているかどうかを検証します。ツリーは、ツリーをマーシャリングする際にソース・スキーマに従って有効なXML文書が生成されるときに、有効であると定義されます。アンマーシャリングにエラーのない検証が含まれる場合、その入力文書とコンテンツ・ツリーは有効です。ただし、アンマーシャリング時の検証は不要です。
検証は次の状況で実行されます。
アンマーシャリング時検証では、アンマーシャリング時のエラーおよび警告がアプリケーションに通知されます。
オンデマンド検証は、アプリケーションによって開始された場合、Javaコンテンツ・ツリーに対して実行されます。
フェイルファスト検証は、即時結果を戻します。
JAXBアプリケーションを構築するには、XMLスキーマ・ファイルで開始します。次の手順を実行してJAXBアプリケーションを構築して使用します。
XMLスキーマ・ファイルをバインディング・コンパイラに発行して、Javaソース・ファイルを生成します。orajaxb
と呼ばれるコマンドライン・ユーティリティを介して、バインディング・コンパイラを起動できます。
JDK 1.3以上を使用してJavaソース・コードをコンパイルします。
クラスとバインディング・フレームワークを使用して、Javaアプリケーションを次のように作成します。
ドキュメントからデータをアンマーシャリングするか、作成したクラスをインスタンス化することで、XMLスキーマに対して有効なXMLデータを表すオブジェクト・ツリーを構築する。
データにアクセスし変更する。
オプションで、XMLスキーマで表現された制約と比較し、データへの変更を検証する。
データを新規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データを表すオブジェクト・ツリーからオブジェクトを挿入または削除する場合。