سؤال

ما هي أفضل طريقة لتحويل .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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top