XMLBeans

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

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。