如何读取存储在模型文件中的序列化对象

时间:2016-07-01 05:05:55

标签: eclipse-emf eclipse-sirius

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

模型文件的类型为

  

?xml version =" 1.0"编码=" UTF-8"

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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以及资源工厂的注册),因为它们已被处理通过生成的项目的plugin.xml。