Я определил DSL с Xtext. Скажем, это выглядит следующим образом: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'
;
В сгенерированном Eclipse IDE, который основан на моем DSL, я реализовал модель. Скажем, это выглядит следующим образом:
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, когда вы должны поместить свой код в плагин пользовательского интерфейса, чтобы иметь доступ к активатору. Если снаружи вы можете поместить его в проект langauge и использовать автономную настройку. –