Qual è il modo migliore per convertire i file .xsd in file .ecore? C'è un plug-in di eclissi per questo?Come convertire xsd in ecore (EMF)
7
A
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 ...
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.
In Galileo è necessario installare la funzionalità "XSD Ecore Converter". Questo fornisce l'importatore del modello per lo schema XML. – ftl
In mai versioni di Eclipse, questa funzione è contenuta nella funzione "XSD - XML SDK Definition Schema". –
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