كيفية تحويل XSD إلى Ecore (EMF)
-
21-08-2019 - |
سؤال
ما هي أفضل طريقة لتحويل .xsd
-الملفات إلى .ecore
-الملفات ؟
هل هناك كسوف المساعد على ذلك ؟
المحلول
هذا ما عملت بالنسبة لي:
- جديد -> مشروع...
- الكسوف النمذجة الإطار -> EMF المشروع
- نموذج المستوردين: مخطط XML
- نموذج محددات: [حدد xsd ملف]
وإحياء .ecore-الملف عندما xsd قد تغير:
- انقر بزر الماوس الأيمن على .genmodel-ملف
- تحديث...
نصائح أخرى
إذا كنت لا ترغب في إنشاء مجموعة جديدة MDT المشروع في كل مرة كنت ترغب في استيراد مخطط كما ECore نموذج ثم هناك أيضا طريقة أخرى للقيام بذلك:
- جديد -> EMF مولد نموذج (في "الكسوف النمذجة إطار")
- اضغط على التالي
- حدد المجلد تحديد اسم الملف (يجب أن يكون ملحق "genmodel")
- اضغط على التالي
- حدد "مخطط XML"كنموذج المستورد
- اضغط على التالي
- حدد URI الخاص بك XSD
- (اختياريا ، حدد وضع علامة في مربع "إنشاء مخطط XML إلى Ecore الخريطة" إذا كنت تريد أن تولد .xsd2ecore ملف خريطة)
- اضغط على التالي
- حدد كل المطلوب الجذر حزم
- اضغط النهاية
ومثال الطبقة. لم أكن تنظيف الواردات.
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");
}
}
هل حاولت
eclipse –console –noExit –noSplash -data C:\temp\emf-ws
-application org.eclipse.xsd.ecore.importer.XSD2GenModel
فهو يولد .ecore و.genmodel لديك مجموعة من XSDs.
لا تنتمي إلى StackOverflow