# Objekt mit DOM serialisieren



## mäcjava (26. Jun 2009)

Hallo,

ich muss für ein Projekt an meiner Schule einen XML Parser auf der Grundlage von DOM schreiben(ich muss). Die Prinzipien sind mir klar nur ich habe folgendes Problem: Ich möchte dem Parser am liebsten ein Objekt liefern, indem eine ganze Menge Daten vorhanden sind: ne Menge ArrayListen und Daten aus verschiedenen Klassen. Wie kann ich da am besten vorgehen. Habe schon einiges versucht  Danke


----------



## Murray (27. Jun 2009)

Unter "XML-Parser" würden die meisten wohl etwas verstehen, was XML versteht und daraus etwas anderes macht - Du willst Deinem "Parser" aber Java-Objekte vorwerfen und dann daraus wohl XML generieren lassen; das wäre dann mehr eine Art Marshaller.

Was genau willst/sollst Du machen?


----------



## André Uhres (27. Jun 2009)

Da er ein Objekt mit DOM serialisieren will, geht es wohl darum, eine Art XML Encoder für Bean Objekte zu bauen. Die Klasse *Introspector* liefert Informationen über eine Bean. Sie kann mit Hilfe der Reflection API die Properties, Events und Methoden einer Bean aus den Bezeichnungen der Zugriffsmethoden der Bean herauslesen.


----------



## mäcjava (27. Jun 2009)

danke - das hört sich doch gut an -- gibt es dazu code beispiele ?


----------



## Murray (27. Jun 2009)

Willst Du Beans oder beliebige Objekte als XML speichern? Muss die Objektstruktur aus dem XML wieder erzeugt werden? 
Musst Du (z.B. weil es eine Hausaufgabe ist) wirklich das Rad neu erfinden, oder kannst Du auch  eine fertige Lösung wie z.B. XStream nutzen?


----------



## mäcjava (27. Jun 2009)

Ich muss das Rad leider neu erfinden. XStream ist echt super, aber darf natürlich nicht benutzt werden. Ich will ein Objekt serialisieren und aus der XML soll wieder ein Objekt zusammengesetzt werden. Das sind keine Hausaufgaben, sondern wir machen an unserer Schule ein Projekt. Wäre für Tipps dankbar...


----------



## Murray (27. Jun 2009)

Der einfachere Teil ist das Ausschreiben als XML-Struktur. Prinzipiell muss man dazu per Reflection das auszugebenden Objekt (bzw. seine Klasse) analysieren und alle Member einzeln betrachten. Hat man einen einfachen Typ vor sich (z.B. String oder int), dann wird er ausgeschrieben. Hat man es hingegen mit einem komplexen Typen zu tun, so wird dieser rekursiv analysiert, bis man irgendwann mal bei einfachen Typen landen. Verkompliziert wird das alles durch Arrays, Collections sowie zyklische Referenzen.


----------

