【问题标题】:How to read the serialized objects stored in the model file如何读取存储在模型文件中的序列化对象
【发布时间】:2016-08-12 16:01:37
【问题描述】:

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

模型文件的类型

?xml 版本="1.0" 编码="UTF-8"?

【问题讨论】:

    标签: eclipse-emf eclipse-sirius


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您有一个基本的族元模型,并且您已经生成了它的模型、编辑和编辑器代码,并且您已经从中创建了一个“.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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2018-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多