丹尼尔,我有将图表导出为 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);
在上面的行中 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);
上面的代码可以很好地生成模型,您可以右键单击该文件并生成图表文件。
我不知道是否有更好的方法来做到这一点,但这对我很有效。试试看,如果您需要进一步的帮助,请告诉我。