为了简单起见,我说有多个Xtext DSL都描述了某种查询。其中一个是我的“基础”DSL。我现在想将我的一个DSL翻译成我的“基础”DSL并检索该模型的字符串表示。
我通过
创建了一个EFactoryMyDslFactory factory = new MyDslFactoryImpl();
然后我手动遍历source-DSL的XtextResource(我从EmbeddedEditor获得)并使用target-DSL工厂来构建我的模型(EObject树)。 现在我想获得该模型的文本表示,但这是我被卡住的地方。我知道如何获取XtextResource的字符串表示,所以我想这是要走的路,但我不知道如何从EObject树创建XtextResource。
在org.eclipse.xtext.junit.AbstractXtextTests中有一个方法
doGetResource(InputStream in, URI uri)
但现在我找不到从我的模型中获取InputStream的方法。
有没有办法从对象树创建XtextResource,还是有更简单的方法来做我想做的事情?
答案 0 :(得分:2)
如果您只想要文本序列化,则应使用注入获取org.eclipse.xtext.serializer.ISerializer的实例。
确保您在Formatter中定义了一些格式规则,否则输出的可读性有点“限制”; - )