ダニエル、図を XML として、またはその逆にエクスポートするには、この要件がありました。私が行った手順を以下に示します。
GUI から XML : - 以下のコードでモデル ファイルを使用して、ルート要素を Java オブジェクトとして返します。
注: - GMF エディターがモデル用とダイアグラム用の 2 つのファイルを生成すると仮定すると、以下のコードへの入力としてモデル ファイルを選択する必要があります。
File model_file = new File(Path_to_your_model_file);
ResourceSet rs = new ResourceSetImpl();
URI fileUri = URI.createFileURI(model_file.getAbsolutePath());
Resource res = rs.getResource(fileUri, true);
Model model = res.getContents().get(0);
上記の行の Model は、ecore モデルのルート オブジェクトを表しています。ルートオブジェクトを取得したので、それを使用してすべての値、参照などを取得できます
これらを使用して、Java コードを手動で記述して XML ファイルを作成できます。
XML から GUI へ: - これも非常に簡単です。
以下のコードを使用して、モデルのルート要素の新しいオブジェクトを作成します。
ModelImpl model = (ModelImpl)ModelFactoryImpl.eINSTANCE.createModel(); // Replace Model with your model element name
まず、JAVA を使用して XML ファイルを解析し、すべての値を段階的に読み取り、属性を段階的にモデル オブジェクトに割り当てる必要があります (例: model.setName(doc.getDocumentElement().getAttribute("name")))。 ;およびChildObjImpl childObject = (ChildObj)ModelFactoryImpl.eINSTANCE.createChildObj(); )
コードでサポートされているさまざまな必須オブジェクトをすべて作成し、それらを親オブジェクトに追加できます (例: model.getChildObject().add(childObject)); )
XML からのすべての情報をこれらのオブジェクトに追加し終わったら、ルート モデル オブジェクトを使用して、以下に示すようにモデル ファイルを作成できます。
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi",new XMIResourceFactoryImpl());
Resource resource = resourceSet.createResource(URI.createFileURI(path_where_u_want_to_save_the_model_with_filename));
resource.getContents().add(dd);
resource.save(null);
上記のコードはモデルを正常に生成します。そのファイルを右クリックして、ダイアグラム ファイルを生成できます。
これを行うためのより良い方法があるかどうかはわかりませんが、これはうまくいきました。試してみて、さらにサポートが必要な場合はお知らせください。