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

访问XText的运行时EMF模型

夔宏深
2023-03-14

我通过Xtext创建了一个DSL,现在需要将编辑器中创建的模型转换为另一个模型。我认为最直接的方法是使用某种M2M转换框架,但我需要访问文本文件后面的模型。问题:如何获得模型的引用?

共有1个答案

易琛
2023-03-14

Xtext创建的模型还为它们创建了一个资源工厂。如果您尝试将文本文件作为EMF模型加载,EMF将为您的文本文件的扩展查找可用的资源工厂。从那里,Xtext将转换EMF模型中的文本文件,并将创建的模型提供给EMF。通过右键单击文本文件并选择“Open With”和“Sample reflective ecore model Editor”,您可以看到这种机制的作用。所以类似这样的方法应该起作用:

ResourceSet rs = new ResourceSetImpl();
Resource r = rs.getResource(uriOfYourTextualFile, true);
List<EObject> contentOfYourFile = r.getContents();
 类似资料:
  • 但是如果我不知道我想要获得的属性的名称怎么办?比方说,基于设计,模型由开发人员具有一些固定的属性,同时还有用户可以动态设置的特性。 因此,目前我使用并通过使用索引来访问由用户创建的属性,因为我知道我得到的列表将以模型的固定属性作为它的第一个元素,以索引0开头。但我发现这个解决方案不明确而且效率低。也有的时候,说我想工作,不适合。 例如: 每一次的帮助都将得到感激。

  • 我有两个基于同一ecore模型的EMF实例版本。我需要以以下格式准备一个从v1到v2更改的事物列表

  • 我正在使用AWS Amplify设置AppSync GraphQL API。我有一个带有@model注释的模式,我正在尝试编写一个lambda解析器,它将读/写@model生成的DynamoDB表。然而,当我尝试使用进行本地测试时,我的JS函数抛出 我似乎根本找不到关于这个用例的太多文档(大多数lambda解析器的示例都是从其他表/api读取的,这些表/api不是放大应用程序的一部分),所以任何指

  • 有没有一种方法可以在运行时访问JUnit5版本? 例如。 在JUnit4中工作得很好。 我正在寻找JUnit5的“对应物” 谢谢:-)

  • 我有关于Android 6(Marshmallow)运行时权限的问题。如果用户想从图库中挑选一张照片,我们是否应该要求权限? 似乎我可以访问画廊,即使我关闭了存储权限。