Даниэль, у меня было это требование для экспорта диаграммы в XML и наоборот.Я дам вам процедуру, которой я следовал ниже.
GUI to 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);
В приведенной выше строке Модельпредставлять ваш корневой объект вашей модели ecore.Теперь, когда вы получили корневой объект, вы можете использовать его для получения всех значений, ссылок и т. Д.
Используя их, вы можете вручную написать код Java для записи файла XML.
XML для GUI : - Это тоже довольно просто
Создайте новый объект для корневого элемента для вашей модели, используя приведенный ниже код.
ModelImpl model = (ModelImpl)ModelFactoryImpl.eINSTANCE.createModel(); // Replace Model with your model element name
Сначала необходимо проанализировать XML-файл, используя JAVA, и шаг за шагом прочитать все значения и шаг за шагом присвоить атрибуты объекту модели (например: 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);
Выше кода создаст модель отлично, вы можете щелкнуть правой кнопкой мыши по этому файлу и сгенерировать файл диаграммые.
Я не знаю, есть ли лучший способ сделать это, но этот работал для меня хорошо.Попробуйте и дайте мне знать, если вам понадобится дополнительная помощь.