Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EMF/Generating Dynamic Ecore from XML Schema
Generating Ecore using from XML Schema
In this Wiki document, i have tried to document the steps involved in Generating Ecore using XML Schema and loading a appropriate XML File into the Model.
- Convert a given XSD into Ecore
- Load an XML into the generated Ecore
- Display the loaded Model using a TreeViewer
For this code to execute, you need to include the following plugins as dependencies
- org.eclipse.emf.ecore
- org.eclipse.xsd
- org.eclipse.emf.ecore.xmi
- org.eclipse.emf.edit.ui
Convert a XSD into Ecore
The following code snippet would enable you to load an existing XSD and convert it into an Ecore.
XSDEcoreBuilder xsdEcoreBuilder = new XSDEcoreBuilder(); ResourceSet resourceSet = new ResourceSetImpl(); Collection eCorePackages = xsdEcoreBuilder.generate(URI.createFileURI("D:/model/example.xsd"));
Note: Running this code could get you a nullPointerException or schemaFileNotFoundException. This is due to a ever popular Crimsom DOM bug. Please refer to the following link to find a workaround to this problem.
Manifestation of Crimsom DOM Bug
Load an XML into the Ecore
HashMap options = new HashMap(); options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE); Resource resource = resourceSet.createResource(URI.createFileURI("D:/model/example.xml")); resource.load(options);
Display using a TreeViewer
List factories = new ArrayList(); factories.add(new ResourceItemProviderAdapterFactory()); factories.add(new ReflectiveItemProviderAdapterFactory()); ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(); TreeViewer tViewer = new TreeViewer(parent); tViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory); tViewer.setLabelProvider(new AdapterFactoryContentProvider(adapterFactory); tViewer.setInput(resourceSet);
Further Reading
Discover the Eclipse Modeling Framework (EMF) and Its Dynamic Capabilities
Newsgroup Msg11109
--Annamalai.chockalingam.gmail.com 18:06, 10 February 2007 (EST)