0

我已经为基本系列创建了 ecore 文件,我已经生成了模型、编辑和编辑器代码,我现在运行应用程序我能够在运行时创建系列模型文件。但是现在我想读取该模型文件获取存储在族模型文件中的序列化对象。

模型文件的类型

?xml 版本=“1.0”编码=“UTF-8”?

4

2 回答 2

0

如果您有一个基本的族元模型,并且您已经生成了它的模型、编辑和编辑器代码,并且您已经从中创建了一个“.basicfamily”模型,您可以使用以下代码来阅读它:

URI uri = URI.createURI(new File("path of your file").getAbsolutePath());
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getPackageRegistry().put(BasicfamilyPackage.eNS_URI, BasicfamilyPackage.eINSTANCE);
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("basicfamily", new XMIResourceFactoryImpl());
Resource resource = resourceSet.getResource(uri, true);
List<EObject> contents = resource.getContents();
// now you can iterate on the root objects of your model, use EObject#getContents() to
// retrieve the children of an EObject and thus navigate in your data

如果此代码在安装了元模型的 Eclipse 插件中运行,则可能不需要此代码的某些部分(在包注册表中添加基本系列 EPackage 和资源工厂的注册),因为它们由插件处理生成项目的 .xml。

于 2016-08-12T08:01:37.697 回答
0

这是一个简单的 EMF 问题(我的意思是,它与 Sirius 无关)。如果您是 EMF 新手,请参阅一些文档。特别是,此 PDF是“ EMF 书”的示例章节,它提供了框架的高级概述。特别是,名为Object Persistence的部分应该回答您的问题(特别是第 31 页上的代码片段,它显示了如何在内存中加载资源/模型)。

于 2016-08-12T08:00:24.957 回答