Wie zu verwenden EMF-Lesen von XML-Datei?
EMF = Eclipse Modeling Framework
Ich habe die Verwendung von EMF in einer meiner Klasse Projekte. Ich versuche zu verstehen, wie EMF, Folgendes zu tun:
- XML Lesen,
- Holen Sie sich die Werte in Objekte.
- Verwenden ORM beibehalten, die Werte in Objekten zur Datenbank. - Fertig
- Holen Sie Daten von der Datenbank mit ORM und generieren von XML.
Muss ich alles tun mit: EMF (keine Ahnung, was so überhaupt) und PPV (FERTIG).
Habe ich verwendet JAXB und ich wusste, das getan werden kann mithilfe von JAXB, aber wie ist (EMF == JAXB)?!
Ich habe viele java-Klassen mit EMF, aber es gibt so viele von Ihnen! Wo implementiere ich die read/write-Methoden und wie führe ich die EMF-Projekt?
Dank
UPDATE1
HINWEIS
http://www.eclipsezone.com/eclipse/forums/t58829.html
UPDATE2
Ich habe schema und ich habe die generierten Modell-code mit dem .xsd. Nun habe ich problem beim Lesen der Daten aus der XML-Datei.
- Ich glaube nicht, dass EMF ist für diesen Zweck entwickelt wurde. Es ist eine Modellierung, die nicht den verbindlichen Rahmen
- Es wird verwendet for XML Binding, ich bin sicher, dass.
- EMF ist (oder wie) entweder eine modeling framework oder einen verbindlichen Rahmen. Es hängt davon ab, wo du aus ... und deine Sicht. (Dies ist ein Aspekt der meta-Modellierung, dass Häufig missverstanden. Modelle können betrachtet werden als Daten, und Umgekehrt.)
- C danke, gut zu wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
EMF serialisiert die Daten-Modell verwenden (die Standardeinstellung, die meiste populäre Weise) XMIResourceImpl, die streng verwendet die XMI-format, und nicht die benutzerdefinierte XML-Struktur.
Sehen http://eclipsedriven.blogspot.com/ für Artikel über EMF und deren Anwendungsfälle.
Ich Stimme mit anderen Beantworter, dass EMF ist wahrscheinlich nicht das, was Sie hier wollen.
Wenn ich wirklich wollen, um die Verwendung von EMF mit einer benutzerdefinierten XML-Struktur (D. H. nicht-XMI), würde ich wahrscheinlich mit JAXB zu Marschall/unmarshal meine EMF-Objekte (EObjects).
Also EMF ist nicht das gleiche wie JAXB und Sie haben unterschiedliche Zwecke und Ziele. In der Tat können Sie wahrscheinlich kombinieren EMF und JAXB in gewisser Weise. Ich habe es nie versucht, aber es scheint, es sind gültige Verwendungen Fällen. (wie ich oben sagte, für das Marshalling/unmarshaling EMF-Objekte to/from XML)
Verstehen, EMF, müssen Sie schalten Sie Ihr Paradigma. Für ein start-entfernen Sie das "XML" - Teil, lass es von deinem Geist. Dann empfehle ich dir Folgendes zu tun:
EMF hat Unterstützung für das Lesen/schreiben XML-Schema-metamodellen (d.h. XSD-Dateien) für den Zweck der Umwandlung in ein Ecore-Modells, aber nicht XML-Dateien, die konform zu diesem schema (auch nicht auf Ecore), es sei denn, diese Dateien werden im XMI-format.
Für die Persistenz von EMF-Modellen in einer relationalen Datenbank finden Sie unter:
http://eclipsedriven.blogspot.com/2010/12/persisting-emf-objects-to-rdbms-with.html
Ich bin mit Teneo. (und Optional, CDO)
Bezug auf "XML", wenn Sie den stick nach XMI und zufrieden sein, EMB-wird Ihr Leben viel einfacher, als Sie brauchen nicht zu tun alle mapping (im Gegensatz zu JAXB). Der Nachteil ist, dass unsere Objekte werden müssen EMF-Objekte.
EMF-Objekte sind Objekte, die erzeugt werden durch EMF und implementiert EObject und direkt oder indirekt erweitert EObjectImpl. Sie in der Regel nicht wollen, um code EMF-Objekte mit der hand, es wäre eine lästige Pflicht. Auf der anderen Seite, JAXB "Objekte" sind in der Regel Reine domain-Objekt POJOs und hat keine zusätzliche Anforderung von JAXB. Beachten Sie, dass im Gegensatz zu JAXB, EMF-Objekte sind nicht POJOs. Dies erklärt auch ein anderes Ziel zwischen EMF und JAXB. Ihre überlappen, ist weniger, als man sich das vorstellt.
Lesen von XMI-Format (nicht XML) ist sehr einfach:
Können Sie Lesen, beliebige XML-Dateien mit EMF, vorausgesetzt, Sie haben die XSD für Sie, und Sie haben nicht einmal zum generieren von Java-Klassen aus dem XSD.
Ich darüber gebloggt, dass dies ein paar Monate her, aber ich werde fügen Sie den code-Schnipsel auch hier. Für eine etwas ausführlichere Erklärung finden Sie in meinem Blogbeitrag auf Laden Sie und vergleichen Sie beliebige XML-Dateien mit EMF.
Zuerst müssen Sie zum laden der XSD und initialisieren Sie ein paar Dinge:
Danach können Sie laden Sie Ihre XML-Dateien, wie Sie es normalerweise tun würden:
ResourceSetFactory
in?Baute ich ein kleines Programm, das einige grundlegende Modell-format Konvertierung mit emftriple (ehemalige emf4sw), d.h. Ecore XMI-Format (XML-Datei) zur RDF-TTL.
Ich habe einige der Tipps in die Antworten hier, also danke Jungs!
Vielleicht den source-code, die Sie begeistern können: https://github.com/frostyandy2k/model-transformer
Den normalen Weg, das zu tun diese Art der Sache ist zu beginnen mit einem XML-schema, dann verwenden Sie diese zum erzeugen der EMF-Modell, und dann generieren von Java-code. Dies wird beschreiben in diese EMF-tutorial.
Brauchen Sie nicht zu implementieren, lese - /schreib-Methoden. Sondern Sie Gebrauch machen von EMF-code für die Bibliothek zu tun, die XML-import und-export. Ich habe nicht mein Exemplar der EMB-Buch vor mir rechts jetzt, aber es ist bedeckt es. Alternativ, nehmen Sie einen Blick an, was die generierten EMF editor beim laden oder speichern einer Modell-Instanz.
BEARBEITEN
Hier ist ein resource utility-Klasse aus einer EMF-basierten Projekt entwickelte ich vor ein paar Jahren. Blick auf die
load*
Methoden. Beachten Sie, dass dies nicht unbedingt der beste Weg, dies zu tun..., aber es funktionierte für mich.EDIT 2
Ich habe gerade gemerkt, dass ich mit XMI nicht reines XML. Konfigurieren einer XML-reader mit einem benutzerdefinierten schema und (potentiell) eine angepasste schema-mapping wird wahrscheinlich anders sein. So, zurück zu meinem ursprünglichen Antwort, Blick auf den generierten code!!.
EMF ist nicht entworfen, um zu Lesen, beliebige XML-Dateien. EMF verwendet XML als backend. Wo tun Sie Ihre XML-Dateien stammen aus/die schema-tun Sie entsprechen? Wenn Sie das schema, dann können Sie es verwenden, um eine EMF-Modell, welches wiederum hoffentlich in der Lage zu Lesen, Ihre XML-Dateien.
Sonst müssten Sie reverse engineer ein EMF-Modell, das wäre in der Tat serialisieren nach XML, so dass Sie wäre in der Lage, es zu Lesen, aber das wäre ein hack.
Nach UPDATE2:
Ich Schätze, die nächste Frage ist dann "Was für ein problem hast du mit dem laden Ihrer Dateien". Wie Sie es tun, und was funktioniert nicht? Oder wissen Sie nicht, wie es zu tun?
Müssen Sie zunächst konfigurieren Sie die Fabrik für Ihre Ressource (die in-memory-Repräsentation des Satzes von Dateien, die Sie wollen, mit zu arbeiten), und laden Sie dann die Datei mit getResource(URI, bool). Beispiel für einige UML-Sachen, die ich mache:
All das sollte in die Anleitung, die Sie bereits haben den link zu. Anschließend können Sie die generierte Java-API, um die Arbeit von 'root'.
Habe ich keine Erfahrung mit ORM-Zeug, obwohl, aber vielleicht sollten Sie einen Blick auf CDO.