XMLBeansとは? わかりやすく解説

XMLBeans

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/13 06:28 UTC 版)

ナビゲーションに移動 検索に移動
Apache XMLBeans
開発元 Apacheソフトウェア財団
最新版
5.0.1 / 2021年7月10日 (3か月前) (2021-07-10)
プラットフォーム クロスプラットフォーム
種別 XMLデータバインディング
ライセンス Apache License 2.0
公式サイト http://xmlbeans.apache.org
テンプレートを表示

XMLBeans(エックスエムエルビーンズ)は、JavaとXMLデータバインディングとの変換を行うフレームワーク。Apacheソフトウェア財団XMLプロジェクトの一部である。2013年6月に開発を一旦終了したが、その後Apache POIプロジェクトの一部として2018年6月に開発が再開された[1]


概要

XMLBeans は、Java が扱いやすい形でXMLの全ての能力へのアクセスを可能にするツールである。すなわち、XMLと XML Schema の表現能力の豊かさと機能を利用し、それらの機能を可能な限り自然な形でJava言語とその型付き構成要素にマッピングする。XMLBeans は XML Schema を使って Java インタフェースとクラスをコンパイルし、その生成物を使ってXMLインスタンスデータのアクセスと変更を行う。XMLBeans を使うと、新たなインタフェースやクラスを使うのと同じ感覚でXMLインスタンスデータにアクセスできる。XMLインスタンスデータへのアクセスを提供する以外に、XML Infoset への完全なアクセスを可能にするAPIを備え、XML Schema Object モデルを通して XML Schema 自体へのリフレクションも可能にする。

他との違い

XML Schema 完全サポート
XMLBeans は XML Schema を完全サポートしており、対応するJavaクラスは XML Schema の主な機能を全て提供する。この種の技術では、必要な機能をサポートしていないことが多く、非常に重要な特徴である。また、XML Schema 向けアプリケーションの構築に際して XML Schema の全能力を活用するようにでき、サブセットに制限されることがない。
完全な XML Infoset 再現性
XMLインスタンスをアンマーシャリングしたとき、完全な XML Inforset が保持され、開発者が利用できる。XML のサブセットは容易に Java で表現できない部分があるため、これは重要である。例えば、要素の順序やコメントがアプリケーションによっては必要になるかもしれない。

目的

XMLBeans の主な目的は、ストリーミング以外の(メモリ上の)あらゆるXMLプログラミングで利用可能なものを構築することであった。XML Schema をコンパイルしてJavaクラスを生成したいとき

  1. あらゆる Schema について XMLBeans が利用可能であり、
  2. 任意の必要なレベルのXMLへのアクセスを得ることができ、別々のツールを使う必要がない。

API

以上のような目的を達成するため、XMLBeans は以下の3つのAPIを提供している。

XmlObject
XML Schema から生成されるJavaクラスは全て XmlObject を継承する。これにより、XMLに定義されている各要素について強く型付けされたゲッターとセッターを提供する。複合型の要素は XmlObject のインスタンスである。例えば、getCustomer が返す CustomerType は実際には XmlObject クラスを継承したクラス(のインスタンス)である。単純型の場合は通常のJavaのデータ型のゲッターとセッターになる。例えば、getName が String クラスのインスタンスを返すなど。
XmlCursor
任意の XmlObject のインスタンスから XmlCursor クラスのインスタンスを得ることができる。これを使って、XML Inforset に直接アクセスできる。カーソルはXMLインスタンスでの位置を表現している。カーソルは文字単位やトークン単位など任意の細かさで前後に移動可能である。
SchemaType
基になっているスキーマメタ情報へのアクセスを提供するクラス。例えば、ある XML Schema のサンプルインスタンスを生成したい場合や、ある要素がとりうる値を列挙したい場合などに利用できる。

これらは全て、性能を考慮して構築されている。XMLBeans は一般に非常に性能がよいと言われている。

以下は、国を表現したXMLスキーマ定義の簡単な例である。

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema targetNamespace="http://www.openuri.org/domain/country/v1"
            xmlns:tns="http://www.openuri.org/domain/country/v1"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="1.0">
   <xs:element name="Country" type="tns:Country"/>
   <xs:complexType name="Country">
     <xs:sequence>
       <xs:element name="Name" type="xs:string"/>
       <xs:element name="Population" type="xs:int"/>
       <xs:element name="Iso" type="tns:Iso"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Iso">
     <xs:annotation><xs:documentation>ISO 3166</xs:documentation></xs:annotation>
     <xs:sequence>
       <xs:element name="Alpha2" type="tns:IsoAlpha2"/>
       <xs:element name="Alpha3" type="tns:IsoAlpha3"/>
       <xs:element name="CountryCode" type="tns:IsoCountryCode"/>
     </xs:sequence>
   </xs:complexType>
   <xs:simpleType name="IsoCountryCode">
     <xs:restriction base="xs:int">
       <xs:totalDigits value="3"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="IsoAlpha2">
     <xs:restriction base="xs:string">
       <xs:pattern value="[A-Z]{2}"/>
       <xs:whiteSpace value="collapse"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="IsoAlpha3">
     <xs:restriction base="xs:string">
       <xs:pattern value="[A-Z]{3}"/>
       <xs:whiteSpace value="collapse"/>
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>

このスキーマをXMLBeanクラスに(例えば Antを使って)コンパイルすると、スキーマ定義に従ったXMLデータを容易に生成・操作できるコードが生成される。以下のJavaコードは、XML文書の生成と評価の様子を簡単に示したものである。

 import org.openuri.domain.country.v1.Country;
 import org.openuri.domain.country.v1.Iso;
 public class CountrySample 
 {
   public static void main(String[] args) {
     Country country = Country. Factory.newInstance();
     country.setName("Denmark");
     country.setPopulation(5450661);  // wikipedia より :-)
     // country XMLBean を XML として表示
     System.out.println(country.xmlText());
     // 文書が妥当かチェック - "Document is invalid" と表示するだろう
     // オブジェクトに必要な Iso 子要素が生成されていないため
     System.out.println ("Document is " + (country.validate() ? "valid" : "invalid"));
     // 複合型 Iso の子要素を追加し、文書を妥当なものにする
     Iso iso = country.addNewIso();
     iso.setAlpha2("DK");
     iso.setAlpha3("DNK");
     iso.setCountryCode(208);
     // country XMLBean を XML として表示
     System.out.println(country.xmlText());
     // 文書が妥当かチェック - "Document is valid" と表示されるだろう
     System.out.println ("Document is " + (country.validate() ? "valid" : "invalid"));
   }
 }

歴史

David Bau はBEAシステムズ在籍時(現在はGoogle勤務)に XMLBeans プロジェクトを開始した。彼はそのツールの主任設計者であり、チームを率いて XMLBeans 1.0 を設計・実装した。

XMLBeans は、BEA WebLogic にかつて含まれていたXMLバインディングツール XMLMaps を基盤としていた。XMBeans は当初 BEA WebLogic Workshop Framework というプロプライエタリな製品の一部として開発された。しかし2003年1月27日に初めて発表された当初から、BEA はこれをオープン標準にしたいと表明していた。その時点では、BEAが標準化をどの団体に任せるかは明らかではなかったが、2003年中に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 プロジェクトからトップレベルプロジェクトの1つに昇格。
  • 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 リリース

関連項目

脚注

外部リンク


XMLBeans

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/03/07 09:05 UTC 版)

Apache XML」の記事における「XMLBeans」の解説

XML文書Javaバインディングを行うツールXML Schemaスキーマ記述されファイルをもとに、Javaソースコード自動生成する(JavaBeans準拠)。

※この「XMLBeans」の解説は、「Apache XML」の解説の一部です。
「XMLBeans」を含む「Apache XML」の記事については、「Apache XML」の概要を参照ください。

ウィキペディア小見出し辞書の「XMLBeans」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「XMLBeans」の関連用語

XMLBeansのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



XMLBeansのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのXMLBeans (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのApache XML (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS