2009-03-22 5 views

Répondre

8

C'est ce qui a fonctionné pour moi:

  • Nouveau -> Projet ...
  • Eclipse Modeling Framework -> EMF projet
  • Importateurs Modèle:XML Schema
  • Modèle URI: [Select xsd-File]

Pour revalider le .ecore-fichier lorsque xsd a changé:

  • Clic droit sur .genmodel -File
  • Recharger ...
+4

Dans Galileo, vous devez installer la fonction "XSD Ecore Converter". Cela fournit l'importateur de modèle pour XML Schema. – ftl

+0

Dans toutes les versions d'Eclipse, cette fonctionnalité est incluse dans la fonction "XSD - XML ​​Schema Definition SDK". –

+0

Dans les versions les plus récentes (néon 3 dans mon cas), j'avais besoin d'installer [XML schema definition] (http://www.eclipse.org/modeling/mdt/downloads/?project=xsd). Je peux donc voir l'importateur de schéma XML. – ClickBright

2

Un exemple de classe . Je n'ai pas nettoyé les importations.



import org.eclipse.emf.common.util.URI; 

import java.io.IOException; 
import java.util.Collection; 
import java.util.Iterator; 

import org.eclipse.emf.ecore.*; 
import org.eclipse.xsd.*; 
import org.eclipse.xsd.ecore.XSDEcoreBuilder; 
import org.eclipse.emf.ecore.resource.Resource; 
import org.eclipse.emf.ecore.resource.ResourceSet; 
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; 
import org.eclipse.emf.ecore.xmi.*; 
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; 
import org.eclipse.emf.edit.ui.*; 


public class Xsd2Ecore { 

    public static void main(String[] args) { 
     Xsd2Ecore x2e = new Xsd2Ecore(); 
     x2e.go("UMLVersions/V1.0.0/UML2XMI.xsd", "UMLVersions/V1.0.0/UML2100.xmi"); 
    } 


    public void go(String sourcename, String targetname) { 

     System.out.println("Starting"); 

     XSDEcoreBuilder xsdEcoreBuilder = new XSDEcoreBuilder(); 
     ResourceSet resourceSet = new ResourceSetImpl(); 
     Collection eCorePackages = xsdEcoreBuilder.generate(URI.createFileURI(sourcename)); 

     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl()); 
     Resource resource = resourceSet.createResource(URI.createFileURI(targetname)); 

     for (Iterator iter = eCorePackages.iterator(); iter.hasNext();) { 
      EPackage element = (EPackage) iter.next(); 
      resource.getContents().add(element); 
     } 

     try { 
      resource.save(null); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     System.out.println("Finished"); 

    } 

} 

6

Si vous ne voulez pas créer un nouveau projet MDT chaque fois que vous souhaitez importer un schéma comme modèle Ecore puis il y a aussi une autre façon de le faire:

  • Nouveau ->EMF générateur modèle (dans "Eclipse Modeling Framework")
  • Appuyez sur Suivant
  • Sélectionner un dossier et spécifier le nom de fichier (doit avoir l'extension "genmodel")
  • Appuyez sur Suivant
  • Sélectionnez "XML Schema" comme importateur de modèle
  • Appuyez sur Suivant
  • Sélectionnez URI à votre XSD
  • (En option, cochez la case "Créer un schéma XML pour Ecore Map" si vous voulez générer un fichier de carte .xsd2ecore)
  • Appuyez sur Suivant
  • Sélectionner les packages souhaités racine
  • Appuyez sur Terminer
+0

Merci, cherchait partout pour cela :). – studgeek

0

Avez-vous essayé

eclipse –console –noExit –noSplash -data C:\temp\emf-ws 
    -application org.eclipse.xsd.ecore.importer.XSD2GenModel 

Il génère .ecore et .genmodel pour votre ensemble de XSDs.