EMFは、カスタム XML 構造ではなく、厳密に XMI 形式を使用するXMIResourceImpl (デフォルトの最も一般的な方法) を使用してデータ モデルをシリアル化します。
EMF とその使用例に関する記事については、 http://eclipsedriven.blogspot.com/を参照してください。
EMFはおそらくあなたがここで望んでいるものではないという他の回答者に同意します。
カスタム XML 構造 (つまり、XMI ではない) で EMF を本当に使用したい場合は、おそらく JAXB を使用して EMF オブジェクト (EObject) をマーシャリング/アンマーシャリングします。
したがって、EMF は JAXB と同じではなく、目的と目標が異なります。実際、おそらく何らかの方法で EMF と JAXB を組み合わせることができます。試したことはありませんが、有効な使用例があるようです。(上で述べたように、EMF オブジェクトを XML との間でマーシャリング/アンマーシャリングするため)
EMF を理解するには、パラダイムを切り替える必要があります。まず、「XML」部分を削除して、頭から離してください。次に、次のことを行うことをお勧めします。
- 空の EMF プロジェクトを作成します。
- 簡単な Ecore ファイル (.ecore) を作成するか、インターネットから取得します。または、任意の XML スキーマ/UML ファイルから Ecore モデルにインポートします。
- EClass を右クリックして [Create Dynamic Instance] をクリックすると、.xmi ファイルが作成されます。
- Eclipse を使用して .xmi ファイルを開くと、そのモデルの EMF エディターが開きます。必要に応じて編集します。
- (編集された) .xmi ファイルの内容を調べます。形式が Ecore モデルに完全に準拠していることがわかります。モデル <-> XMI ファイルからマッピングを変更/カスタマイズすることはできません。その名前が示すように、XMIResourceImpl は XMI ファイル (たまたま XML の上に実装されている) の読み取り/保存のみを行いますが、読み取り/保存は行いません。任意の XML 形式。
EMF は、 XML スキーマ メタモデル(つまり、XSD ファイル) を Ecore メタモデルに変換する目的で読み取り/書き込みをサポートしていますが、これらのファイルが XMI 形式でない限り、そのようなスキーマに準拠する (Ecore でさえない) XML ファイルはサポートしません。 .
EMF モデルをリレーショナル データベースに永続化するには、http:
//eclipsedriven.blogspot.com/2010/12/persisting-emf-objects-to-rdbms-with.htmlを参照してください。
テネオを使っています。(およびオプションで CDO)
「XML」に関しては、XMI に固執し、それに満足している場合、EMF を使用すると (JAXB とは異なり) マッピングを行う必要がないため、作業がはるかに簡単になります。欠点は、オブジェクトが EMF オブジェクトでなければならないことです。
EMF オブジェクトは、EMF によって生成され、EObject を実装し、直接的または間接的に EObjectImpl を拡張するオブジェクトです。通常、手作業で EMF オブジェクトをコーディングすることは望ましくありません。一方、JAXB の「オブジェクト」は通常、純粋なドメイン オブジェクト POJO であり、JAXB からの追加要件はありません。JAXB とは異なり、EMF オブジェクトは POJO ではないことに注意してください。これは、EMF と JAXB の間の別の異なる目標を説明しています。それらの重なりは、あなたが想像するよりも少ないです。
XMI (XML ではない) からの読み取りは非常に簡単です。
XMIResource resource = new XMIResourceImpl(URI.create("file:/path/to/mymodel.xmi"));
resource.load(null);
System.out.println( resource.eContents().get(0) );