# ecore konforme xml datei erstellen



## Spot84 (24. Nov 2009)

Hallo!
ich habe bisher sehr wenig mit emf gemacht und hätte daher einmal eine grundlegende Frage. 
Ich habe ein Modell in einer Objektstruktur erzeugt. Dieses Modell würde ich nun gerne als XML-Datei abspeichern, das zu einem Metamodell(ecore) konform sein soll. Diese XML-Datei kann dann von einem Editor eingelesen werden und durch einen mit Hilfe von GMF programmierten Modelleditor grafisch dargestellt werden. Das Metamodell also die ecore-Datei liegt bereits vor.

Kann mir da villeicht wer sagen wie ich am besten vorgehe und was ich mir anschauen solte um die XML-Datei zu erzeugen. Gibt es villeicht ein Tutorial oder ähnliches? Ich hab mir auch in einer Bibliothek das Buch "EMF-Eclipse Modelling Framework" geholt, allerings weiss ich nicht wirklich unter welchem Punkt ich da schauen muss..

Vielen Dank!

Gruß, spot


----------



## Wildcard (24. Nov 2009)

Tut mir leid, das verstehe ich nicht. Du willst selbst eine Ecore Datei erzeugen, oder was meinst du mit konform?



> Dieses Modell würde ich nun gerne als XML-Datei abspeichern, das zu einem Metamodell(ecore) konform sein soll. Diese XML-Datei kann dann von einem Editor eingelesen werden und durch einen mit Hilfe von GMF programmierten Modelleditor grafisch dargestellt werden


Um dein Modell mit GMF darzustellen muss deine Modellinstanz doch nicht als Ecore-XML gespeichert werden. GMF braucht nur das ecore das dein Modell beschreibt zur Design Time. Zur Laufzeit kann das Modell dann herkommen wo es will (XMI, XML, textfile, Datenbank, binärdatei,...)


----------



## Spot84 (25. Nov 2009)

Mhh.. also erstmal nein, ich will keine Ecore Datei erstellen. Diese liegt schon vor. 
So wie ich es verstanden habe ist in der Ecore Datei das Metamodell für spezielle Modellbäume beschrieben.
Weiterhin wurde mit GMF ein Editor geschrieben der solche Modellbäume einlesen und darstellen kann. Die Dateien die er dabei einliest sind XML-Dateien.

Mein Programm erzeugt jetzt auch solche Bäume aber  bisher eben nur im Code als Objektstruktur. Was ich jetzt machen will ist aus dieser Objektstruktur eine XML-Datei zu erzeugen die von dem Editor eingelesen und dargestellt werden kann. 

Hierfür dachte ich, dass diese XML-Dateien konform mit dem Metamodell(also der ecore) sein müssen.

Ich weiss allerdings nicht wie ich diese XML-Dateien erstellen kann.. 



> Um dein Modell mit GMF darzustellen muss deine Modellinstanz doch nicht als Ecore-XML gespeichert werden. GMF braucht nur das ecore das dein Modell beschreibt zur Design Time. Zur Laufzeit kann das Modell dann herkommen wo es will (XMI, XML, textfile, Datenbank, binärdatei,...)



Ja das ist klar. Der Editor wurde ja auch schon in GMF umgesetzt und nutzt dafür auch die bereits vorhandene Ecore-Datei. Ich will jetzt halt eine solche XML-Datei erstellen die zur Laufzeit vom Editor geladen werden kann.


----------



## Spot84 (25. Nov 2009)

oder kann es villeicht sein das ich garkein EMF dafür  brauche?
Das ich also einfach einen xml-Writer nehme der mir die xml(oder xmi)-Dateien gemäß dem Metamodell schreibt?


----------



## Wildcard (25. Nov 2009)

Wenn du sagst du erstellst programmatisch die Objektbäume, dann meinst du das du dir erzeugten EClasses verwendest, richtig? In diesem Fall instanzierst du eine Resource (spezifisch, oder die generische XML/XMI Resource, je nachdem was du brauchst).
Dann setzt du den Content und speicherst -> fertig.
Pseudocode:


```
MyEObject model = createSomeModelContent();
Resource resource = new MyResourceImpl();
resource.getContents().add(model);
resource.save(new FileOutputStream(new File("blubb.xml")));
```


----------



## Spot84 (6. Dez 2009)

Hallo Wildcard!
erstmal sorry das ich jetzt erst zurück schreibe aber ich war leider ein paar Tage  vom Internet getrennt. 


> Wenn du sagst du erstellst programmatisch die Objektbäume, dann meinst du das du dir erzeugten EClasses verwendest, richtig?



Nein nein, ich hab mir einfach ein eigenes Javaprogramm geschrieben das keine Eclasses verwendet oder sowas.Die Objektstruktur hab ich mir selbst überlegt. Ich kann dieses Modell in meinem Programm auch beliebig durchgehen also alle Knoten, Attribute etc.. durchlaufen. Das Modell(also eine Instanz des Metamodells(ecore)) würde ich nun gerne als XML-Datei ablegen. Damit dann ein bereits bestehender Editor diese XML-Dateien einlesen kann, muss meine XML-Datei aber gültig zum Metamodell sein.
Der Editor wurde als Eclipse Plugin geschrieben und kann halt XML-Dateien einlesen die zum Metamodell kompatibel sind.


----------



## Wildcard (6. Dez 2009)

Siehe oben, du packst deine Instanz in die Resource und rufst save auf.


----------



## Spot84 (6. Dez 2009)

ah ok. ich versuch das morgen gleich mal. Dankeschön Wildcard!!


----------

