当前位置: 首页 > 知识库问答 >
问题:

从XMI文件加载EMF模型实例

越开畅
2023-03-14

我知道有几个关于这个主题的QnA。我已经尝试了很多解决方案,我总是得到相同的错误。

我的代码结构如下所示:

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
    Map<String, Object> m = reg.getExtensionToFactoryMap();
    m.put("xmi", new XMIResourceFactoryImpl());

    ResourceSet resSet = new ResourceSetImpl();
    Resource resource = resSet.getResource(URI.createURI("model/List.xmi"), true);
    resource.load(Collections.EMPTY_MAP);
    EObject root = resource.getContents().get(0);
    XMIResource resource = new XMIResourceImpl(URI.createURI("model/List.xmi"));
    resource.load(null);
    System.out.println( resource.getContents().get(0) );

请帮忙

亲切的问候

共有1个答案

马哲
2023-03-14

原因是,我没有生成模型代码。因此,无法找到“列表”包。我确实把它添加到了我的packageRegistry中,仅此而已。

        ResourceSet resourceSet = new ResourceSetImpl();

        // register UML
        Map packageRegistry = resourceSet.getPackageRegistry();
        packageRegistry.put(list.ListPackage.eNS_URI, list.ListPackage.eINSTANCE);

        // Register XML resource as UMLResource.Factory.Instance
        Map extensionFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
        extensionFactoryMap.put("xmi", new XMIResourceFactoryImpl());

        Resource resource = (Resource) resourceSet.createResource(uri);


        // try to load the file into resource
        resource.load(null);
 类似资料:
  • > 在Eclipse中新建EMF项目 导入xmi架构:xmi.xsd,并获取xmi.genmodel文件 使用xmi.genmodel生成eclipse中的所有代码,它将生成模型代码 新建一个Junit4测试用例,并尝试用Junit插件测试加载xmi-model.xmi文件,但失败了,下面是我的代码。 例外情况是: 好的,然后我试着去读xsd文件和xmi文件,我发现在xmi-model.xmi里面

  • 我已经从一个.xsd文件创建了一个.ecore和.genmodel元模型。我试图从一个符合.xsd文件的.xml文件创建一个模型实例(因此也符合.ecore元模型)。我怎样才能达到这个目标呢?

  • 我正在XTend中构建一个代码生成器,在那里我已经有了输入模型和元模型。也就是说,我使用ATL为XTend代码生成器生成输入模型(作为转换序列的一部分,以逐步降低抽象级别,而不是立即;这就是我不使用xtext创建语法的原因)。 解决方案: 解决方案正如Sven在我接受的答案中所建议的,但我也想指出,您需要使用genmodel来从元模型生成Java工件。此链接显示了如何:http://www.vog

  • 我有一个基于emf的模型。在模型中,我有一个feature类,我可以向这些feature添加约束。例如,特性A“暗示”特性B。我正在尝试使用emf命令堆栈向特性添加约束。它将约束添加到特征中,但缺少属性。我的代码如下

  • 我想知道是否有一种方法(或某种代码示例)在Flink流媒体应用程序中加载编码的预训练模型(用python编写)。所以我可以使用从文件系统加载的权重和来自流的数据来拟合模型。 先谢谢你

  • 使用三维软件导出.obj模型文件的时候,会同时导出一个材质文件.mtl, .obj和.stl文件包含的信息一样都是几何体顶点相关数据,材质文件.mtl包含的是模型的材质信息,比如颜色、贴图路径等。 加载.obj三维模型的时候,可以只加载.obj文件,然后借助three.js引擎自定义材质Material,也可以同时加载.obj和.mtl文件。 只加载obj文件 只加载obj文件,引入路径three