快速业务通道

浅析Eclipse建模框架(EMF)及其动态能力 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
源注册表中注册包

resourceSet.getPackageRegistry().put(companyPackage.getNsURI(), companyPackage);

//加载资源

resource.load(null);

注意到局部的和全局的包(EPackage.Registry.INSTANCE)以及资源工厂(Resource.Factory.Registry.INSTANCE)的注册差别也是很重要的。全局注册是静态的,因此任何应用程序在JVM生存期都能存取全局注册并且可能覆盖它。为确保你的注册不会覆盖全局注册并且反过来也如此,典型地,你最好使用局部资源集合注册。

五、由XML模式生成动态的Ecore

如前所提及,如果你的模型是一个XML模式但是你没有选择生成Java类,那么,你可以通过使用XSDEcoreBuilder来动态地创建一个Ecore模型。这个示例使用了ipo.xsd:

XSDEcoreBuilder xsdEcoreBuilder = new XSDEcoreBuilder(); ResourceSet resourceSet = new ResourceSetImpl(); Collection eCorePackages=xsdEcoreBuilder.generate(URI.createFileURI("c:/temp/ipo.xsd"));

这个generate方法返回为这个模式中的每个URI生成的Ecore包。如果该模式导入了其它命名空间,那么将有多个Ecore包被返回。每个包是被注册到本地的资源集中-用于实现模式转换。因此,如果你使用同样的资源集来装载你的实例XML文档的话,你就不需要自己注册包。

因为XML模式包括更多概念而不仅仅是Ecore,例如通配符等,所以EMF使用Ecore EAnnotations来记录到XML模式的映射。在数据(反)串行化期间,EMF需要处理这些注解。为了确保这些注解在(反)串行化期间被加以考虑,你必须使用XMLResource.ExtendedMetaData选项:

HashMap options = new HashMap(); options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE); //请参考http://www.w3.org/TR/2004/PER-xmlschema-0-20040318/#ipo.xml Resource resource = resourceSet.createResource(URI.createFileURI("c:/temp/ipo.xml")); resource.load(options);

EMF 2.1还增加了一项新功能-它允许你在加载一个包含一个xsi:schemaLocation或xsi:noNamespaceSchemaLocation属性的XML文档时,不断地把模式转换成Ecore。同时,它也允许你加载一个没有与之相关联的模式的XML文档。为了使用这一功能,你需要注册 org.eclipse.emf.ecore.xmi.impl.GenericXMLResourceFactoryImpl:

resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml",new GenericXMLResourceFactoryImpl());

六、小结

本文向你简短介绍了EMF,并解释了几个核心的EMF概念。同时,对于如何利用模式EMF的动态能力提供了相关示例。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号