Domanda

Qual è il modo migliore per convertire .xsd - quelli in .ecore -? File

C'è un plugin Eclipse per questo?

È stato utile?

Soluzione

Questo è quello che ha funzionato per me:

  • Nuovo -> Progetto ...
  • Eclipse Modeling Framework -> EMF Progetto
  • Importatori modello: XML Schema
  • Modello URI : [Select XSD-file]

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

  • Fai clic destro su .genmodel -File
  • Ricarica ...

Altri suggerimenti

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 fare questo:

  • Nuovo -> EMF Generator Model (in "Eclipse Modeling Framework")
  • Premere Avanti
  • Selezionare la cartella e specificare il nome del file (deve avere l'estensione "genmodel")
  • Premere Avanti
  • Seleziona " XML Schema ", come modello importatore
  • Premere Avanti
  • Seleziona URI per XSD
  • (Opzionalmente, selezionare la casella di spunta "Crea XML Schema per Ecore Mappa" se si desidera generare un file .xsd2ecore mappa)
  • Premere Avanti
  • Seleziona tutti i pacchetti desiderati root
  • Premi Fine

Una classe di esempio. Non ho fatto ripulire l'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");

    }

}

Hai provato

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

E '.ecore e .genmodel genera per il set di XSD.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top