2012-02-09 40 views
0

爲了簡單起見,我說我有多個Xtext DSL都描述某種查詢。其中之一是我的「基礎」DSL。我現在想將我的DSL中的一個翻譯成我的「基礎」DSL並檢索模型的字符串表示形式。從EObject樹(模型)獲取XtextResource

我通過

MyDslFactory factory = new MyDslFactoryImpl(); 

創建EFactory然後我手動遍歷源DSL的XtextResource(我從EmbeddedEditor),並使用目標DSL工廠建立我的模型(EObject樹)。 現在我想獲得該模型的文本表示,但這是我卡住的地方。我知道如何獲取XtextResource的字符串表示形式,所以我猜這就是要走的路,但我不知道如何從EObject樹創建XtextResource。

在org.eclipse.xtext.junit.AbstractXtextTests有一個方法

doGetResource(InputStream in, URI uri) 

,但現在我沒有找到一種方式來獲得從我的模型的InputStream。

有沒有辦法從對象樹創建XtextResource還是有一種更簡單的方法來做我想做的事情?

回答

2

如果你只是想要文本序列化,你應該使用注入獲得org.eclipse.xtext.serializer.ISerializer的實例。

請確保您已經在Formatter中定義了一些格式化規則,否則輸出的可讀性有點「有限」;-)