EMF中的模型保存一

使用EMF生成模型代码时,通常Eclipse会有一个缺省的保存格式。

在保存模型时,EMF会把根据模型生成一个EMF的Resource,然后用这个Resource来进行保存与加载。

在EMF中通常使用的Resource类型有:XML和XMI。在使用genmodel生成代码之前,我们可以设置要使用的Resource类型:

  • None
  • Basic
  • XML
  • XMI
  1. 如果选择None,则没有Resource类会被生成,可以看util包下的类;
  2. 如果选择的是一个Basic的类型,则会生成一个直接继承ResourceImpl的类;
  3. 如果选择的是XML类型,则会生成一个继承XMLResourceImpl的类;
  4. 如果选择的是XMI类型,则会生成一个继承XMIResourceImpl的类;

模型的加载与保存就是在Resource类的doSave()和doLoad()方法中完成的。在继承之前,先介绍一些简单的修改方法

 

一、修改Annotation

 

对于XML的Resource类型,这个比较简单,在ecore文件里,我们可以给每个元素加个若干个annotation。可以通常定义一些annotation来达到修改的目的。例如,如果想把结果保存为一个元素类型,并且元素名为myElement,则可以定义如下的annotation:

 

      <details key="name" value="myElement"/>
      <details key="kind" value="element"/>

 

二、修改Options

 

当我们使用annotation去修改保存过程的时候,实际是是使用XSD的插件去生成一个XMLMap来指定模型和它的保存类型之间的映射。因此,在XMI的情况下,我们也可以通过直接构建XMLMap来达到修改的目的。

 

在Editor(如果有一个的话)的doSave()方法中,在Resource保存前,我们可以指定XMLMap。例如:

 

	XMLMapImpl xmlMapImpl = new XMLMapImpl();
	XMLInfoImpl infoImpl = new XMLInfoImpl();
	infoImpl.setName("contentName");
	infoImpl.setXMLRepresentation(XMLInfoImpl.ATTRIBUTE);
	xmlMapImpl.add(PurchasePackage.eINSTANCE.getItemType_Comment(), infoImpl);
								
	saveOptions.put(XMLResource.OPTION_XML_MAP, xmlMapImpl);

 

这个意思就是说把comment这个元素修改为一个属性,并且保存的属性名为contentName。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值