ईएमएफ डेटा मॉडल को (डिफ़ॉल्ट, सबसे लोकप्रिय तरीका) XMIResourceImpl का उपयोग करके क्रमबद्ध करता है, जो सख्ती से एक्सएमआई प्रारूप का उपयोग करता है, न कि एक कस्टम एक्सएमएल संरचना।
ईएमएफ और इसके उपयोग के मामलों के बारे में लेखों के लिए http://eclipsedriven.blogspot.com/ देखें।
मैं अन्य उत्तरदाताओं से सहमत हूं कि ईएमएफ शायद आप यहां नहीं चाहते हैं।
यदि मैं वास्तव में एक कस्टम एक्सएमएल संरचना (यानी एक्सएमआई नहीं) के साथ ईएमएफ का उपयोग करना चाहता हूं, तो शायद मैं अपने ईएमएफ ऑब्जेक्ट्स (ईओब्जेक्ट्स) मार्शल/अनमशाल के लिए जेएक्सबी का उपयोग करूंगा।
तो ईएमएफ जेएक्सबी के समान नहीं है और उनके पास विभिन्न उद्देश्यों और लक्ष्यों हैं। वास्तव में आप शायद किसी भी तरह से ईएमएफ और जेएक्सबी को जोड़ सकते हैं। मैंने कभी कोशिश नहीं की है, लेकिन ऐसा लगता है कि वैध उपयोग के मामले हैं। (जैसा कि मैंने उपरोक्त कहा है, एक्सएमएफ ऑब्जेक्ट्स को एक्सएमएल से/एमएमएफ ऑब्जेक्ट्स के लिए)
ईएमएफ को समझने के लिए आपको अपना प्रतिमान स्विच करने की आवश्यकता है। शुरुआत के लिए "एक्सएमएल" भाग को हटा दें, इसे अपने दिमाग से जाने दें। तो मैं आपको निम्न कार्य करने का सुझाव देता हूं:
- एक खाली ईएमएफ परियोजना बनाएं।
- एक साधारण ईकोर फ़ाइल (.ecore) बनाएं, या इसे इंटरनेट से प्राप्त करें। या किसी भी एक्सएमएल स्कीमा/यूएमएल फ़ाइल से एक इकोर मॉडल में आयात करें।
- ईक्लास पर राइट क्लिक करें, फिर "डायनामिक इंस्टेंस बनाएं", यह एक .xmi फ़ाइल बनाएगा।
- एक्लिप्स का उपयोग करके .xmi फ़ाइल खोलें, यह उस मॉडल के लिए ईएमएफ संपादक खोल देगा। जैसा कि आप फिट देखते हैं संपादित करें।
- (संपादित) .xmi फ़ाइल की सामग्री का निरीक्षण करें। आप देखेंगे कि प्रारूप बिल्कुल इकोर मॉडल के अनुरूप है। आप मॉडल < -> XMI फ़ाइल से मानचित्रण को बदलने/अनुकूलित करने में सक्षम नहीं होंगे क्योंकि, जैसा कि नाम का तात्पर्य है, XMIResourceImpl केवल XMI फ़ाइलों को पढ़ता/सहेजता है (जो एक्सएमएल के शीर्ष पर लागू होता है) लेकिन यह पढ़ता/सहेजता नहीं है मनमाना एक्सएमएल प्रारूप।
ईएमएफ XML स्कीमा मेटामॉडल लेखन/पढ़ने के लिए समर्थन हासिल है (अर्थातएक्सएसडी फाइलें) उन्हें एक इकोर मेटामोडेल में परिवर्तित करने के उद्देश्य से, लेकिन एक्सएमएल फाइलें नहीं हैं जो ऐसी स्कीमा (यहां तक कि इकोर तक नहीं) के अनुरूप होती हैं, जब तक ये फ़ाइलें एक्सएमआई प्रारूप में न हों।
एक संबंधपरक डेटाबेस में EMF मॉडल बने के लिए देखें: http://eclipsedriven.blogspot.com/2010/12/persisting-emf-objects-to-rdbms-with.html
मैं Teneo उपयोग कर रहा हूँ। (और वैकल्पिक, सीडीओ)
के बारे में "XML", अगर आप XMI पर कायम है और इसके साथ ही संतोष, EMF अपने जीवन कर देगा बहुत आसान है, तो आप के विपरीत किसी भी मानचित्रण करने की ज़रूरत नहीं है के रूप में (JAXB)। नकारात्मकता यह है कि हमारी वस्तुएं ईएमएफ ऑब्जेक्ट्स होनी चाहिए।
ईएमएफ ऑब्जेक्ट्स ऐसी वस्तुएं हैं जो ईएमएफ द्वारा उत्पन्न होती हैं और ईओब्जेक्ट लागू करती हैं और सीधे या अप्रत्यक्ष रूप से ईओब्जेक्टआईएमपीएल फैली हुई हैं। आप आम तौर पर हाथ से ईएमएफ ऑब्जेक्ट्स को कोड नहीं करना चाहते हैं, यह एक कोर होगा। दूसरी तरफ, जेएक्सबी "ऑब्जेक्ट्स" आमतौर पर शुद्ध डोमेन ऑब्जेक्ट पीओजेओ होते हैं और जेएक्सबी से कोई अतिरिक्त आवश्यकता नहीं होती है। ध्यान दें कि जेएक्सबी के विपरीत, ईएमएफ ऑब्जेक्ट्स पीओजेओ नहीं हैं। यह ईएमएफ और जेएक्सबी के बीच एक और अलग लक्ष्य बताता है। उनका ओवरलैप आप कल्पना करने से कम है। बशर्ते आप उनके लिए XSD है,
XMIResource resource = new XMIResourceImpl(URI.create("file:/path/to/mymodel.xmi"));
resource.load(null);
System.out.println(resource.eContents().get(0));
मुझे नहीं लगता कि EMF उस उद्देश्य के लिए बनाया गया है। यह एक मॉडलिंग है, बाध्यकारी ढांचे नहीं – Bozho
इसका उपयोग एक्सएमएल बाध्यकारी के लिए किया जाता है, मुझे इसके बारे में निश्चित है। – zengr
@ बोझो - ईएमएफ या तो मॉडलिंग फ्रेमवर्क या बाइंडिंग फ्रेमवर्क है (या इसका उपयोग किया जा सकता है)। यह इस बात पर निर्भर करता है कि आप कहां से शुरू करते हैं ... और आपका दृष्टिकोण। (यह मेटा-मॉडलिंग का एक पहलू है जिसे अक्सर गलत समझा जाता है। मॉडल को डेटा के रूप में देखा जा सकता है, और इसके विपरीत।) –