浅析Eclipse建模框架(EMF)及其动态能力 - 编程入门网
初始化一个你的模型的实例:
//得到company工厂
EFactory companyFactory = companyPackage.getEFactoryInstance();
//使用工厂来创建company类的实例并且
//设置company名字
EObject company = companyFactory.create(companyClass);
company.eSet(companyName, "MyCompany");
//创建一个employee类的实例
EObject employee = companyFactory.create(employeeClass);
//使用反射API初始化employee的名字
employee.eSet(employeeName, "John");
//创建一个department类的实例
EObject department = companyFactory.create(departmentClass);
department.eSet(departmentNumber, new Integer(123));
//添加"John"到department
((List)department.eGet(departmentEmployees)).add(employee);
//添加department到company
((List)company.eGet(companyDepartments)).add(department);
浅析Eclipse建模框架(EMF)及其动态能力(3)时间:2011-03-07四、数据的串行化和反串行化 为了串行化你的模型实例,你需要把一个你的实例模型的根对象放置到一个资源中。EMForg.eclipse.emf.ecore.resource.Resource接口描述了一个物理的存储位置(例如文件或URL)并且提供方法以串行化和装载数据。每一种资源都被存储在一个ResourceSet中-它代表了一个资源集合-这些资源被一起创建和加载并允许在它们当中进行参考引用。特别地,一个ResourceSet负责跟踪哪些资源已被装载并且保证这个ResourceSet中的资源不会被重复装载。 因为EMF能够处理多重模型源,例如XML模式,所以指定使用哪些资源来实现(反)串行化你的数据也是很重要的。通常,当你调用ResourceSet.createResource(URI)方法时,它查询Resource.Factory.Registry来查找一个工厂-该工厂是为该URI而注册的并且使用它来创建一个适当的资源实现。因此,在你(反)串行化你的数据以前,请确保你已注册了适当的资源工厂实现。EMF提供若干Resource.Factory实现: ·对于XML数据,使用org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl。 ·对于XMI数据,使用org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl。 ·对于Ecore模型,使用org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl。 你的工具箱中有了这些EMF资源后,你就能使用下面的代码来串行化你的数据:
在反串行化过程中,XML数据的命名空间URI被用于定位所需要的Ecore包(它用于描述你的实例文档的模型)。因此,在你尝试装载任何模型以前,请确保你已经为你的文档将要使用的每个Ecore包注册了命名空间URI: //在本地资 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |