java - Xtext: Export model as XMI/XML -


i have defined dsl xtext. let's looks this:

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' ; 

in generated eclipse ide, based on dsl, implemented model. let's looks following:

house myhouse     height 102.5     width 30.56 end house  car mycar     maxspeed 190     brand "mercedes" end car 

i export model xmi or xml file.

the reason want is, have workflow, allows me change model parameters on fly, using xmi/xml file. instead of redefining model, can pass xml/xmi file workflow, automatically.

short example: dsl allows defining components house , car. house allows parameters width , height, car allows parameters maxspeed , brand (see grammar above).

so in workflow talking about, parameters changed different values. example generated xml looking this:

<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> 

how can export model xmi/xml?

i finaly found solution. following code exports *.xmi file requested in opening post:

private void exportxmi(string absulotetargetfolderpath) {     // change mylanguage language name     injector injector = new mylanguagestandalonesetup()             .createinjectoranddoemfregistration();     xtextresourceset resourceset = injector             .getinstance(xtextresourceset.class);      // .ext ist extension of model file     string inputuri = "file:///" + absulotetargetfolderpath + "/myfile.ext";     string outputuri = "file:///" + absulotetargetfolderpath + "/myfile.xmi";     uri uri = uri.createuri(inputuri);     resource xtextresource = resourceset.getresource(uri, true);      ecoreutil.resolveall(xtextresource);      resource xmiresource = resourceset             .createresource(uri.createuri(outputuri));     xmiresource.getcontents().add(xtextresource.getcontents().get(0));     try {         xmiresource.save(null);     } catch (ioexception e) {         e.printstacktrace();     } } 

Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -