`

[zt]利用EMF直接从xml文档载入模型

阅读更多

FROM:http://ganzhi.bokee.com/2968058.html

通常我们使用EMF的方式是让EMF为我们产生stub代码。但有些情况下可能无法预先生成Java代码,而需要直接从XML文件中直接载入模型。使用GenericXMLResourceFactoryImpl能够直接载入XML文档,不管这个文档是否具有Schema。如果XML文档具有Schema,那么GenericXMLResouceFactoryImpl能够根据schema生成Epackage。(载入没有schema的XML文档是在EMF 2.1.0之后加入的)

java 代码
  1. package ganzhi.test.emf;   
  2.   
  3. import java.io.File;   
  4. import java.io.IOException;   
  5. import java.util.HashMap;   
  6. import org.eclipse.emf.common.util.TreeIterator;   
  7. import org.eclipse.emf.common.util.URI;   
  8. import org.eclipse.emf.ecore.resource.Resource;   
  9. import org.eclipse.emf.ecore.resource.ResourceSet;   
  10. import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;   
  11. import org.eclipse.emf.ecore.xmi.XMLResource;   
  12. import org.eclipse.emf.ecore.xmi.impl.GenericXMLResourceFactoryImpl;   
  13. import org.eclipse.emf.ecore.xmi.impl.XMLParserPoolImpl;   
  14.   
  15. public class LoadNoSchemaXML {   
  16.   
  17.     /**  
  18.      *   
  19.      * @param args  
  20.      *   
  21.      */  
  22.   
  23.     public static void main(String[] args) {   
  24.   
  25.         try {   
  26.   
  27.             HashMap options = new HashMap();   
  28.   
  29.             options.put(XMLResource.OPTION_USE_PARSER_POOL,   
  30.   
  31.             new XMLParserPoolImpl());   
  32.   
  33.             options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);   
  34.   
  35.             options.put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);   
  36.   
  37.             ResourceSet rs = new ResourceSetImpl();   
  38.   
  39.             Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(   
  40.   
  41.             "xml"new GenericXMLResourceFactoryImpl());   
  42.   
  43.             URI fileURI = URI.createFileURI(new File(   
  44.   
  45.             "ganzhi\\test\\emf\\schema\\LibraryNoS.xml")   
  46.   
  47.             .getAbsolutePath());   
  48.   
  49.             Resource resource = rs.createResource(fileURI);   
  50.   
  51.             resource.load(options);   
  52.   
  53.             int i = 0;   
  54.   
  55.             for (TreeIterator ti = resource.getAllContents(); ti.hasNext();) {   
  56.   
  57.                 System.out.println(i);   
  58.   
  59.                 System.out.println(ti.next());   
  60.   
  61.                 i++;   
  62.   
  63.             }   
  64.   
  65.         } catch (IOException e) {   
  66.   
  67.             // TODO Auto-generated catch block   
  68.   
  69.             e.printStackTrace();   
  70.   
  71.         }   
  72.   
  73.     }   
  74.   
  75. }   
分享到:
评论

相关推荐

    EMF读取XML

    在处理XML数据时,EMF提供了一种高效且灵活的方式,能够将XML文档转换为可操作的对象模型,进而进行读取、解析和编辑。下面将详细介绍EMF读取XML的相关知识点。 1. **EMF模型与XML的关系** - EMF模型是面向对象的...

    使用EMF开发基于模型的Eclipse插件

    EMF的出现解决了这个问题,它能够将设计阶段创建的模型直接转化为有效的Java代码,从而缩短了从设计到实现的时间,提高了开发效率。 #### EMF的关键作用 EMF不仅支持模型到代码的转换,还支持从代码到模型的逆向...

    eclipse插件开发EMF api 文档

    8. **反向工程**:EMF还可以从已存在的Java类生成元模型,这被称为反向工程或逆向工程,可以快速构建基于现有代码的模型。 9. **扩展和定制**:EMF允许开发者通过继承和实现接口来扩展其功能,如自定义类型系统、...

    emf教程入门和插件

    Ecore模型可以通过图形化界面(EMF Edit)或XML源代码来创建和编辑。 3. **XMI和XML绑定** EMF使用XMI(eXtensible Metadata Interchange)作为默认的数据交换格式,它是一种基于XML的规范,用于交换模型信息。...

    创建和读取基于 XML 模式的 XML 文档

    相较于SDO 1.0,2.0版本引入了一些关键改进,例如增加了Helper类,如XSDHelper和XMLHelper,使得开发者无需直接与EMF SDK交互,就能更好地利用SDO的功能。 在这个初级级别的教程中,作者通过一个简单的示例展示了...

    EMF XSD SDK

    【EMF XSD SDK】是Eclipse平台下用于XML Schema Definition (XSD) 支持的软件开发工具包,它提供了强大的模型驱动框架(Model-Driven Framework, MDF)和可扩展标记语言(XML)相关的服务。这个SDK是Eclipse ...

    Eclipse Modeling Framework (EMF) Developer Guide

    - **使用 XML Schema 生成模型**: EMF 支持从 XML Schema 定义(XSD)文件生成 EMF 模型。这种方法特别适用于那些已经定义了 XML 格式的数据结构的应用程序。 #### 5. JET 教程 **JET Tutorial Part 1 & 2** 部分...

    EMF 自学笔记5

    此外,EMF还支持模型的序列化和反序列化,即将模型实例转换为XML或其他格式的数据,或者从数据中恢复模型实例。EMF的序列化机制可以处理复杂的模型结构,包括循环引用、嵌套对象等,确保了模型数据的完整性和一致性...

    EMF.rar_emf

    - **模型编辑**:利用EMF的编辑器,可以创建和编辑模型实例,直观地查看和修改模型结构。 - **运行与调试**:编写基于EMF的代码,测试模型的创建、读取、更新和删除操作,进行必要的验证和转换。 5. **学习资源**...

    EMF Developer Guide

    EMF(Eclipse Modeling Framework)开发者指南是一份详细介绍如何使用EMF进行模型驱动开发的文档。这份指南没有中文翻译,但提供了对EMF基础概念、使用方法和高级主题的概述。 EMF是一个Java框架,其核心功能是代码...

    EMF Eclipse Modeling Framework 第二版

    - 本书还包含了对 `@model` JavaDoc 标签、生成器模型属性以及资源保存和加载选项的完整文档,帮助开发者更好地理解并利用 EMF 提供的各种功能。 6. **最新 EMF 特性**: - 扩展元数据:提供更丰富的模型元数据...

    eclipse emf&gef

    将现有的XML或UML模型导入到EMF中,然后利用EMF的工具对其进行扩展和维护。 ##### 2.2 EMF编辑器与代码生成 **2.2.1 生成的插件** EMF自动生成的插件包含了编辑器、视图和其他相关组件。 **2.2.2 通过GenModel...

    emf-xsd-SDK-2.6.1

    XSD (XML Schema Definition) 是一种用于定义XML文档结构的语言,它为XML文档提供了一种形式化的规范,确保数据的一致性和有效性。在EMF中,XSD文件可以被用来作为模型的定义,生成相应的Java类和API,这样开发人员...

    emf-runtime,eclipse modeling framework

    4. 序列化和反序列化:EMF支持将模型对象序列化为XML,便于存储和传输,也可以从XML数据中反序列化回模型对象。 5. 集成其他Eclipse技术:如Xtext用于生成自定义编程语言,M2T用于模型到文本转换,M2M用于模型之间的...

    emf-sdo-xsd-SDK-2.3.1

    3. **数据绑定**:EMF SDO提供了数据绑定功能,能够将数据对象直接映射到XML文档,或者与其他数据源(如数据库)进行交互。这对于跨系统数据交换非常有用。 4. **模型操作**:使用生成的Java类,开发者可以进行增删...

    java开发工具EMF插件

    EMF支持从UML(统一建模语言)和其他建模语言导入和导出模型,使得跨工具的互操作性成为可能。 二、核心功能 1. **模型定义**:EMF允许开发者使用Ecore(EMF的基础元模型)来定义自己的数据模型。Ecore是一种XML ...

    emf-sdo-xsd-SDK-2.3.2.zip

    总的来说,"emf-sdo-xsd-SDK-2.3.2.zip"是一个强大的工具,它结合了EMF的模型驱动开发能力、SDO的数据访问统一性以及XSD的结构定义,为开发者提供了构建基于模型的XML数据处理系统的一站式解决方案。在Java Swing...

    EMF模型文件对比/比较(emf.compare)

    EMF(Eclipse Modeling Framework)模型文件对比/比较(emf.compare)是针对基于EMF构建的模型文件进行差异分析的工具。EMF是Eclipse项目中的一个子项目,它提供了一种创建、操作和共享复杂的领域特定语言(DSL)...

Global site tag (gtag.js) - Google Analytics