3

私はこれを、モデリング プログラムで使用されるファイル形式から EMF モデルに変換するスタンドアロン アプリケーションの最後の段階として試みてきました。元の形式を XSD に変換でき、これを Eclipse インポーターを使用して手動で EMF モデルに変換できますが、プロセスを自動化するためにプログラムでこれを行う方法がわかりません。Javaコマンドは、Java内からステートメントを実行するだけでよいため、同じことを行うコマンドラインステートメントと同様に正常に機能します。http://wiki.eclipse.org/Generating_Dynamic_Ecore_from_XML_Schemaを試して、これを行う方法をしばらく探しましたおよび他のさまざまな潜在的な解決策がありますが、何も機能していないようです。XSD ファイルから .ecore および (/または?) .genmodel ファイルを生成する方法に関するサンプル コードを誰かが提供できる場合は、非常に感謝していますが、どのように進めることができるかについてのガイダンスさえあります。非常に役立ちます。

ありがとうございました。

4

2 に答える 2

5

クラスorg.eclipse.xsd.ecore.XSDEcoreBuilderと、それが Eclipse インポーター ウィザードによって使用される方法を見てみましょう。
使い方はかなり簡単に思えます。そのgenerateメソッドの 1 つを呼び出すだけで、 aCollection<Resource>または aが返されますCollection<EObject>

(編集: コメントで追加の質問に答える)
クラスEPackageは に相当する Ecore であり、これには s に相当する Ecore である esxs:schemaが含まれています。 EClassxs:complexType

次のコード スニペットは、ソース XSD と同じフォルダーに foo.ecore ファイルを作成して保存する必要があります。foo.xsd にインポートされた追加の XSD がある場合、それらは個別の .ecore ファイルに変換されるため、戻り値の型はCollection<Resource>.

URI schemaURI = URI.createFileURI("foo.xsd");
Collection<Resource> ecoreResources = XSDEcoreBuilder.generateResources(schemaURI);
for (Resource ecoreResource : ecoreResources) {
    ecoreResource.save(null);
}
于 2009-08-05T16:32:27.393 に答える