EMF模型解析的策略分析(转)

本文介绍了两种使用EMF解析XML文件的方法。一种通过AdapterFactoryEditingDomain,适用于特定编辑器;另一种使用自动生成的Process类,适用于更广泛的场景。文章还详细解释了EMF如何通过扩展点配置获取业务模型解析器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到两种使用EMF解析.xml为EMF模型的策略:
 一种是通过如下代码:

IFileEditorInput modelFile = (IFileEditorInput)getEditorInput();
URI resourceURI = URI.createPlatformResourceURI(modelFile.getFile().getFullPath().toString());;
resource = editingDomain.getResourceSet().getResource(resourceURI, true ); 上面这种方式会引用一个AdapterFactoryEditingDomain类,但我们基于模型做编辑器时,有时并不需要用这个类,例如GEF,它具有自身的EditorDomain。

另外一种方式是使用EMF模型自动生成的Process,该类一般在模型的Util包下面,引用代码如下:
IFileEditorInput modelFile = (IFileEditorInput)getEditorInput();
XMLProcessor processor = new DesignXMLProcessor();
resource = processor.load(new InputSource(new InputStreamReader(modelFile.getFile().getContents(), "GBK")), null);

  其实,对于EMF而言,上面两种解释方式,归根到底都需要EMF获得 业务模型相关的解析器,对于第一种方式,EMF是如何获取到业务模型的解析器呢?主要是通过扩展的方式,扩展定义在模型的plugin.xml中,代码片断如下图所示:
<extension point="org.eclipse.emf.ecore.extension_parser">
<parser
type="design"
class="com.neusoft.report.design.util.DesignResourceFactoryImpl" />
</extension>
这样,解析.xml文件时,EMF从ResourceFactory注册中,根据相应的type,获取解析器(DesignResourceFactoryImpl),完成解析。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值