| 開発者 | Apache ソフトウェア財団 |
|---|---|
| 安定版リリース | 5.1.1 / 2022年8月29日 |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | XMLバインディング |
| ライセンス | Apache ライセンス 2.0 |
| Webサイト | xmlbeans.apache.org |
XMLBeansは、 Apache Software Foundation XMLプロジェクトの一部であるJavaからXML へのバインディング フレームワークです。
説明
XMLBeans は、Java に優しい方法で XML のパワーをフルに活用できるツールです。XML とXML スキーマの豊富な機能を活用し、これらの機能を同等の Java 言語と型付け構造にできるだけ自然にマッピングするという考え方です。XMLBeans は XML スキーマを使用して Java インターフェイスとクラスをコンパイルし、これを使用して XML インスタンス データにアクセスして変更することができます。XMLBeans の使用方法は、他の Java インターフェイス/クラスの使用方法と似ています。Java で作業する場合と同じように、getFoo や setFoo などのメソッドを使用します。XMLBeans の主な用途は、厳密に型付けされた Java クラスを使用して XML インスタンス データにアクセスすることですが、完全なXML 情報セットへのアクセス(XMLBeans は XML 情報セットの忠実性を維持) や、XML スキーマ オブジェクト モデルを介して XML スキーマ自体への反映を可能にする API もあります。
XMLBeans の特徴
- 大規模なXML スキーマのサポート。
- 大規模なXML 情報セットのサポート。
大規模な XML スキーマのサポート: XMLBeans は XML スキーマを完全にサポートし、対応する Java クラスは XML スキーマのすべての主要機能の構成を提供します。Java で操作するために必要な XML スキーマの機能を制御できないことがよくあるため、これは重要です。また、XML スキーマ指向のアプリケーションは XML スキーマのパワーを最大限に活用でき、サブセットに制限される必要がありません。
大規模な XML 情報セットのサポート: XML インスタンスをアンマーシャリングすると、完全な XML 情報セットが保持され、開発者が利用できるようになります。XML のサブセットは Java で簡単に表現できないため、これは重要です。たとえば、特定のアプリケーションでは、要素やコメントの順序が必要になる場合があります。
客観的
XMLBeans の主な目的は、ストリーミング以外の (メモリ内の) XML プログラミング状況すべてに適用できるようにすることです。開発者は、XML スキーマを Java クラスのセットにコンパイルでき、次のことが可能になることを認識する必要があります。
- 遭遇するすべてのスキーマに XMLBeans を使用します。
- 他のツールを使用せずに、必要なレベルで XML にアクセスできます。
APIについて
上記の目的を達成するために、XMLBeans は次の 3 つの主要な API を提供します。
- XMLオブジェクト
- XML カーソル
- スキーマタイプ
XmlObject: XML スキーマから生成される Java クラスはすべて XmlObject から派生します。これらは、定義された XML 内の各要素に対して、厳密に型指定されたゲッターとセッターを提供します。複合型は XmlObject です。たとえば、getCustomer は CustomerType (XmlObject) を返します。単純型は、正しい Java 型を持つ単純なゲッターとセッターになります。たとえば、getName は String を返します。
XmlCursor: 開発者は、任意の XmlObject から XmlCursor を取得できます。これにより、XML 情報セットへの効率的な低レベル アクセスが提供されます。カーソルは、XML インスタンス内の位置を表します。カーソルは、個々の文字からトークンまで、必要な任意の粒度レベルで XML インスタンス内を移動できます。
SchemaType: XMLBeans は、基礎となるスキーマ メタ情報を反映するために使用できる完全な XML スキーマ オブジェクト モデルを提供します。たとえば、開発者は XML スキーマのサンプル XML インスタンスを生成したり、要素の列挙を検索して表示したりすることができます。
例
国を記述する単純な 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ベース= "xs:string" > <xs:pattern値= "[AZ]{2}" /> <xs:whiteSpace値= "collapse" /> </xs:restriction> </xs:simpleType> <xs:simpleType名= "IsoAlpha3" > <xs:制限ベース = "xs:string" > <xs:pattern値 = "[AZ]{3}" /> <xs:whiteSpace値 = "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.valid ( ) ? " 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 . valid () ? "valid" : "invalid" )); } }
歴史
David Bau は、 BEA在籍中に XMLBeans 1.0 プロジェクトの主任設計者でした。XMLBeans は、以前の BEA WebLogic製品に含まれていた XML バインディング ツールである XMLMaps を基に開発されました。XMLBeans は、もともと独自の BEA WebLogic Workshop Framework の一部として開発されましたが、2003 年 1 月 27 日の初発表時に行われたインタビューから、BEA がこれをオープン スタンダードにしたいと考えていたことは明らかでした。その時点では、標準化の取り組みに BEA が関与させたい組織は決まっていませんでした。その年の後半に、XMLBeans は Apache Software Foundation に寄贈されました。最初のチームには Cezar Cristian Andrei と Eric Vasilik が含まれ、後に Cliff Schmidt と Radu Preotiuc-Pietro、Jacob Danner、Kevin Krouse、Wing Yew Poon が加わりました。現在、XMLBeans はApache POIによって開発されています。
- 2003 年 1 月 27 日: BEA がテクノロジー プレビューとして XMLBeans を発表しました。
- 2003 年 9 月 24 日: BEA は XMLBeans を Apache Software Foundation に寄贈し、Apache Incubator プロジェクトに参加しました。
- 2004 年 4 月 23 日: XMLBeans バージョン 1.0.2 がリリースされました。これは、インキュベータ プロジェクトからの最初のリリースです。
- 2004 年 6 月 25 日: XMLBeans は Apache Incubator プロジェクトを卒業し、トップレベル プロジェクトになりました。
- 2005 年 6 月 30 日: XMLBeans バージョン 2.0 がリリースされました。
- 2005 年 11 月 16 日: XMLBeans バージョン 2.1 がリリースされました。
- 2006 年 6 月 23 日: XMLBeans バージョン 2.2 がリリースされました。
- 2007 年 6 月 1 日: XMLBeans バージョン 2.3 がリリースされました。
- 2008 年 7 月 8 日: XMLBeans バージョン 2.4 がリリースされました。
- 2009 年 12 月 14 日: XMLBeans バージョン 2.5 がリリースされました。
- 2012 年 8 月 14 日: XMLBeans バージョン 2.6 がリリースされました。
- 2014 年 5 月 23 日: XMLBeans は正式に廃止され、アクティブな開発は一時的に停止されました。
- 2018年6月29日: XMLBeansは「廃止されず」、Apache POIが積極的な開発を引き継ぎました。[1]
参照
- XMLデータバインディング
- XML バインディングのための Java アーキテクチャ(JAXB)
- xmlbeansxx — C++用のXML データ バインディングコード ジェネレーター
参考文献
- ^ 「XMLBeans の歴史」。
外部リンク
- 公式サイト
- XMLBeans リソース
- Apache XML プロジェクト
- XMLBean Ant タスク
- XML バインディング リソース - 一般的なスキーマの xbeans 2009-04-11 にWayback Machineでアーカイブされました
