XMLBeansは、
JavaとXMLデータバインディング間の変換を支援するフレームワークで、
Apacheソフトウェア財団のXMLプロジェクトの一部として開発されています。2013年6月に開発が一時停止されましたが、2018年6月に
Apache POIプロジェクトの一部として再開されました。
概要
XMLBeansは、
JavaがXMLの持つあらゆる能力を容易に扱えるようにするためのツールです。XMLとそのスキーマの表現力と機能を活用し、それらを
Java言語の型付き要素に自然な形でマッピングします。
XML Schemaを使用して
Javaインターフェースとクラスをコンパイルし、生成された成果物を使ってXMLインスタンスデータのアクセスや変更を行います。XMLBeansを利用することで、新たなインターフェースやクラスを扱うような感覚でXMLインスタンスデータにアクセスできます。
また、XMLインスタンスデータへのアクセス機能だけでなく、XML Infosetへの完全なアクセスを可能にするAPIや、
XML Schema Object Modelを通じた
XML Schema自体のリフレクションも提供します。
他の技術との違い
XML Schemaの完全サポート: XMLBeansは
XML Schemaを完全にサポートしており、生成される
Javaクラスは
XML Schemaの主要な機能をすべて備えています。他の類似技術では必要な機能が欠けている場合が多い中、この完全なサポートは非常に重要な特徴です。これにより、
XML Schemaの全能力を活用したアプリケーション構築が可能になり、機能のサブセットに制限されることはありません。
完全なXML Infosetの再現性: XMLインスタンスをアンマーシャリングする際、完全なXML Infosetが保持され、開発者が利用可能です。XMLのサブセットは
Javaで表現が難しい場合があるため、要素の順序やコメントなど、アプリケーションによっては必要な情報も保持される点は重要です。
目的
XMLBeansの主な目的は、ストリーミング以外のあらゆるXMLプログラミングで利用可能なものを構築することです。具体的には、以下の点が挙げられます。
あらゆるスキーマに対してXMLBeansが利用可能であること。
必要なレベルのXMLへのアクセスを可能にし、別々のツールを使う必要がないこと。
XML SchemaをコンパイルしてJavaクラスを生成すること
API
上記の目的を達成するために、XMLBeansは主に3つのAPIを提供しています。
XmlObject:
XML Schemaから生成される
Javaクラスは全てXmlObjectを継承します。これにより、XMLに定義された各要素に対して、型が強く定義されたゲッターとセッターが提供されます。複合型の要素はXmlObjectのインスタンスとなり、例えば`getCustomer`が返す`CustomerType`は、実際にはXmlObjectクラスを継承したクラスのインスタンスです。単純型の場合は、
Javaの標準データ型のゲッターとセッターが利用できます(例:`getName`がStringクラスのインスタンスを返す)。
XmlCursor: 任意のXmlObjectインスタンスからXmlCursorクラスのインスタンスを取得でき、これを使ってXML Infosetに直接アクセスできます。カーソルはXMLインスタンスでの位置を表し、文字単位やトークン単位など、細かな単位で前後に移動できます。
SchemaType: 基になるスキーマのメタ情報へのアクセスを提供するクラスです。例えば、
XML Schemaのサンプルインスタンスを生成したり、要素が取りうる値を列挙したりする際に利用できます。
これらのAPIは、性能を考慮して構築されており、XMLBeansは一般的に非常に高いパフォーマンスを発揮します。
例
以下は、国を表現したXMLスキーマ定義の簡単な例です。
xml
このスキーマをXMLBeansクラスにコンパイル(Antなどを使用)することで、スキーマ定義に従ったXMLデータの生成と操作を容易にするコードが生成されます。以下は、XML文書の生成と評価の様子を示す
Javaコード例です。
java
CountryDocument doc = CountryDocument.Factory.newInstance();
CountryType country = doc.addNewCountry();
country.setName("Japan");
country.setPopulation(126000000);
System.out.println(doc.xmlText());
歴史
XMLBeansプロジェクトは、David Bau氏(元
BEAシステムズ、現
Google勤務)が主導して開始されました。彼はこのツールの主任設計者としてチームを率い、XMLBeans 1.0を設計・実装しました。
XMLBeansは、かつてBEA WebLogicに含まれていたXMLバインディングツールXMLMapsを基盤としています。当初はBEA WebLogic Workshop Frameworkの一部として開発されていましたが、2003年1月27日に初めて発表された当初から、BEAはこれを
オープン標準にしたいと表明していました。その後、
Apacheソフトウェア財団への寄贈が行われました。
主な出来事:
2003年1月27日: BEAがXMLBeansの技術プレビューとして発表。
2003年9月24日: BEAがXMLBeansを
Apacheソフトウェア財団に寄贈し、
Apache Incubatorプロジェクトの一部となる。
2004年4月23日: XMLBeans Version 1.0.2をリリース(Incubatorプロジェクトからの最初のリリース)。
2004年6月25日: XMLBeansが
Apache Incubatorプロジェクトからトップレベルプロジェクトに昇格。
2005年6月30日: XMLBeans Version 2.0をリリース。
2005年11月16日: XMLBeans Version 2.1をリリース。
2006年6月23日: XMLBeans Version 2.2をリリース。
2007年6月1日: XMLBeans Version 2.3をリリース。
2008年7月8日: XMLBeans Version 2.4をリリース。
2009年12月14日: XMLBeans Version 2.5をリリース。
2012年8月14日: XMLBeans Version 2.6をリリース。
2013年6月: 開発が一時終了。
2018年6月: 開発が再開。
2018年6月29日: XMLBeans Version 3.0をリリース。
2020年10月16日: XMLBeans Version 4.0をリリース。
2021年3月14日: XMLBeans Version 5.0をリリース。
関連項目
Java Architecture for XML Binding (JAXB)
外部リンク
プロジェクト公式サイト
XMLBeans resources
Apache XML project'>The
Apache XML project
XMLBean Ant task
XML Binding Resources - xbeans of popular schemas