我用Xtext定義了一個DSL。假設它看起來像這樣:Xtext:將模型導出爲XMI/XML
Model:
components+=Component*
;
Component:
House | Car
;
House:
'House' name=ID
('height' hubRadius=DOUBLE)? &
('width' hubRadius=DOUBLE)?
'end' 'House'
;
Car:
'Car' name=ID
('maxSpeed' hubRadius=INT)? &
('brand' hubRadius=STRING)?
'end' 'Car'
;
在生成的基於我的DSL的Eclipse IDE中,我實現了一個模型。假設它看起來像下面這樣:
House MyHouse
height 102.5
width 30.56
end House
Car MyCar
maxSpeed 190
brand "mercedes"
end Car
我現在想要將該模型導出爲XMI或XML文件。
我想這樣做的原因是,我有另一個工作流程,它允許我使用XMI/XML文件實時更改模型參數。因此,不必重新定義我的模型,我可以將XML/XMI文件傳遞給工作流程,這會自動執行此操作。
簡短示例:DSL允許定義組件House
和Car
。 House
允許參數width
和height
,Car
允許參數maxSpeed
和brand
(參見上面的語法)。
所以在我所說的工作流程中,參數會隨着不同的值而改變。例如,生成的XML我要找應該是這樣的:
<model>
<component name='House'>
<param name='height'>102.5</param>
<param name='width'>30.56</param>
</component>
<component name='Car'>
<param name='maxSpeed'>190</param>
<param name='brand'>mercedes</param>
</component>
</model>
我怎樣才能導出我的模型作爲XMI/XML?
非常感謝您的評論!雖然我成功導入MyLanguageActivator,但在運行時會出現'NoClassDefFoundError'。你知道爲什麼發生這種情況嗎? – John
你如何運行導出?如果在Eclipse內部,您應該將代碼放在UI插件中才能訪問激活器。如果你不在外面,你可以把它放在一個語言項目中,並使用獨立的設置。 –