# Klassenname



## TekoAF (1. Okt 2012)

Hallo zusammen,

Ich arbeite im moment an einem Projekt für die Schule. Da mir XML Files sehr interessiert haben, 
habe ich mich entschieden eine Art WYSIWYG XML Editor zu schreiben. Mir geht es hauptsächlich darum die JAXB API kennenzulernen.

Nun zu meinem Problem:

Was muss ich in JAXB tun damit ein User über eine GUI vollkommend personalisierte Strukturen inklusive Attributswerte aufbauen kann?

Ich dachte an CodeModel  und die Möglichkeit Klassen, bzw direkt Java Code zu generieren. Es scheint mir eine gute Lösung zu sein. Nur evtl. gibt es weniger aufwendige Lösungsansätze.

Habe ich da eine andere Wahl? 

Liebe Grüsse
Teko


----------



## Gast2 (1. Okt 2012)

WYSIWYG Editor für XML Dateien? Wie soll denn das ausschauen? XML Dateien sind doch ganz normale Textdateien.

Willst du einen ganz normalen Texteditor schreiben, oder was genau soll der Editor können?


----------



## TekoAF (2. Okt 2012)

Etwas doof formuliert von mir.

Es geht eher um eine Art Assistenten oder Hilfstool, das XML Einträge übersichtlich darstellt.

Ich möchte auch Einträge eben mittels "Assistenten" schreiben können.
Einen echten und sinnvollen Zweck hat das ganze nicht. Es soll theoretisch nur Zeit
sparen, wenn man XML Files editieren oder erstellen möchte ohne jedes mal Tags verwenden zu müssen.

Das einzige Problem ist im Moment, dass ich mit JAXB zwar von mir vorgefertigte Klassen erstellen und in einem XML File schreiben kann, nur vorallem der Klassenname und die Anzahl Attribute einfach auf die klasse, die ich geschrieben haben, beschränkt sind.

Simpel gesagt: Ich möchte sagen können; Die Klasse soll XYZ heissen, es soll die und die Attribute haben mit so und soviel Werte. Schreib mir das Zeug in meinem File. Und wenn ich nochmal so einen Eintrag möchte. Rufe ich einfach eine Art Template auf und gebe nur die Werte ein. Punkt. Ohne das ich dafür einen neuen Code schreiben muss oder den File selbst öffnen und editieren muss. Die einzige Lösung die mir einfällt ist eine Klasse Dynamisch zu generieren und sie zur Laufzeit zu compilieren und sie dann durch JAXB zu jagen. Das ganze erscheint mir aber etwas suboptimal 


Eins zu eins aus einem JAVA 7 Buch:


```
File javaSrcFile = new File("A.java");
Writer p = new FileWriter(javaSrcFile);
p.write("class A {static {system.out.println(\"Java Compiler API");}} // Die Klasse
p.close

Java Compiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null,null,null);
Iterable<? extends JavaFileObject >units;
units fileManager.getJavaFileObjectFromFiles(Array.asList(javaSrcFile));
CompilationTask task = compiler.getTask(null,fileManager,null,null,null,units);
task.call();
fileManager.close();

URLClassLoader classLoader = new URL ClassLoader( new URL[]{
javaSrcFile.getAbsoluteFile().getParentFile().toURI().toURL()});
Class.forName("A",true,classLoader); //Java Compiler API

javaSrcFile.delete();
```


----------



## SlaterB (2. Okt 2012)

ganz sehe ich dazu nicht durch, aber als Punkt erwähnt:
wenn du sowieso nur für alle Zeit dynamisch arbeitest, nicht tatsächlichen Quellcode für eine neue Klasse schreibst,
dann BRAUCHST du KEINE Klasse, einen Klassenamen + Attribute kann man auch als String + Liste speichern usw.,
z.B. 5 Klassen als 5 Objekte einer Klasse 'EntryType' mit entsprechend befüllten Attributen, dazu noch eine Id,

tatsächliche Entries sind Objekte einer Klasse 'Entry' mit einer Id Typ oder den Klassennamen des EntryType und irgendeine Darstellung der Werte, kann auch wieder Liste sein, kann vielleicht komplett wie 'EntryType' aussehen/ gar keine Unterscheidung nötig,
mehr Details will ich gar nicht nennen, von deinen Notwendigkeiten abhängig, 

jedenfalls ist grundsätzlich möglich Daten strukturiert sinnvoll abzuspeichern, da musst du nicht zwingend Java-Quellcode generieren,
wenn es dir aber kürzer und sauberer erscheint dann auch nicht verboten


----------



## Templarthelast (2. Okt 2012)

Der Gedanke mit dem dynamischen Erstellen von Javaklassen nach der XML Struktur ist wahrscheinlich gar nicht so doof. Diese Technik gibt anderen Leuten die Möglichkeit schnell mit diesen XML Strukturen in Java umzugehen, ohne sich groß in XML bzw. diese spezielle Struktur einarbeiten zu müssen.


----------

