# Navigieren in unbekannten JAXB-Objecten



## Shadow10000 (7. Jul 2010)

Hallo,

ich möchte eine Komponente haben, die mit verschiedenen XSDs klar kommt und am Ende eine XML erzeugt. Zum Befüllen der XML wird JAXB verwendet.
Das setzen der Teilbäume soll meine Komponente übernehmen, dass Befüllen wird von anderen Komponenten vorgenommen denen der JAXB-Aufbau bekannt ist, die von mir aufgerufen werden und mir das Befüllte Objekt zurückgeben. 
Nun möchte ich dieses Object, welches ich von den anderen Komponenten zurückbekomme, in den JAXB-Objecten setzen ohne das mir die genauen setter und getter bekannt sind.
Mir ist nur der "XPATH" bekannt. 

Beispiel:

XPATH: dokument/ParentElement/KindElement (dokument ist das Root-Element)
fremde Komponente: Gibt befülltes KindElement zurück

Um das Kindelement zu setzen müsste ich aufrufen:
dokument.getParentElement().setKindElement(Kindelement)

Mir sind aber die genauen getter und setter unbekannt weil ich ja mit unterschiedlichen XSDs arbeiten möchte.

Um das zu lösen würde ich jetzt den XPATH aufteilen (dokument, ParentElement, KindElement)
und würde mir "ParentElemnt" schnappen und davor ein "get" setzen und über Reflaction die Methode auf der Class von dokument aufrufen. Beim "KindElement" würde ich das gleiche machen bis auf das ich "set" statt "get" davor setze. Mit Schleifen würde ich noch versuchen unterschiedliche String-Manipulationen vorzunehmen (für den Aufruf der Methode über Reflaction) um z. B. darauf reagieren zu können das im XPath "partenElement" steht. Hier würde ich dann noch das p in ein P ändern und dann das "get" davor. Also einfach verschiedene Möglichkeiten wie die Methode aussehen könnte.

Meine Frage ist nun, ob bereits etwas existiert, wo ich den "XPath" reinreiche und er mir das richtige Object aus den JAXB-Objecten wieder gibt? Damit ich den obigen Ablauf nicht programmieren muss.
Oder eine anderen Lösungsansatz.

Ich hoffe es kommt einiger Maßen rüber was ich möchte. 

Danke schon mal für jede Hilfe.


----------



## Shadow10000 (8. Jul 2010)

Das Ganze noch mal etwas anders formuliert:

Ich hab ein JAXB-Objekt als Object, wo ich weiß dass das mein Root-Element bereits enthält und ich weitere Elemente setzen muss. Diese Elemente bekomme ich befüllt von einer anderen Komponente auch nur als Object zurück.
Da ich in meiner Komponente nur mit dem Typ Object arbeite, kann ich nicht mit den "getter" und "setter" von JAXB-Objecten direkt arbeiten.
Wie kann ich nun diese mir nicht genau bekannten Objecte in mein Haupt-Object setzen?


----------



## Wildcard (10. Jul 2010)

Hört sich an als wäre EMF besser für dich geeignet als JAXB. EMF hat eine ausgezeichnete Reflection API und eine Query Engine:
Eclipse Modeling - EMF - Home


----------

