2009-03-22 17 views

risposta

8

Questo è ciò che ha funzionato per me:

  • Nuovo -> Progetto ...
  • Eclipse Modeling Framework -> EMF Progetto
  • Importatori modello:XML Schema
  • Modello URI: [Seleziona xsd-File]

Per rinnovare la .ecore-File quando xsd è cambiato:

  • fare clic destro su .genmodel -File
  • Ricarica ...
+4

In Galileo è necessario installare la funzionalità "XSD Ecore Converter". Questo fornisce l'importatore del modello per lo schema XML. – ftl

+0

In mai versioni di Eclipse, questa funzione è contenuta nella funzione "XSD - XML ​​SDK Definition Schema". –

+0

Nelle versioni più recenti (neon 3 nel mio caso), avevo bisogno di installare [definizione dello schema XML] (http://www.eclipse.org/modeling/mdt/downloads/?project=xsd). Quindi posso vedere l'importatore dello schema XML. – ClickBright

2

Una classe di esempio . Non ho ripulito le importazioni.



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

Se non si desidera creare un nuovo progetto MDT ogni volta che si desidera importare uno schema come modello Ecore poi c'è anche un altro modo per farlo:

  • Nuovo ->EMF Modello del generatore (in "Eclipse Modeling Framework")
  • Premere Avanti
  • Seleziona cartella e specificano il nome del file (deve avere l'estensione "genmodel")
  • Premere Avanti
  • Selezionare "XML Schema", come modello importatore
  • Premere Avanti
  • Selezionare URI al XSD
  • (Facoltativamente, selezionare la casella di spunta "Crea schema XML in Ecore Map" se si desidera generare un file di mappa .xsd2ecore)
  • Premere Avanti
  • Seleziona tutti desiderati pacchetti radice
  • Press Fine
+0

Grazie, cercavo tutto questo :). – studgeek

0

Hai provato

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

Genera .ecore e .genmodel per il set di XSD.