Rouven: Java-2-XML Mapping

Hallo zusammen,

ich stehe gerade vor einem größeren Problem. Hintergrund ist die Übersetzung von einem fachlich getriebenen Java Objektmodell in ein technisch getriebenes XML-Modell und umgekehrt. Schematisch sieht es etwa so aus:
Person {
   String name;
   Integer code1;
   Integer code2;
}

In XML muss etwa sowas rauskommen:
<aufruf>
  <service>tuWas</service>
  <name>Rouven</service>
  <unterstruktur>
    <service>speichereUnterstruktur</service>
    <typ>1</typ>
    <wert>Code 1</wert>
  </unterstruktur>
  <unterstruktur>
    <service>speichereUnterstruktur</service>
    <typ>2</typ>
    <wert>Code 2</wert>
  </unterstruktur>
</aufruf>

Bevor jemand auf den genialen Einfall kommt was an der Ausgangslage zu drehen: an der XML-Struktur sind _keinerlei_ Änderungen möglich, am Objektmodell nur in äußerst geringem Maße. Gesucht wird eine möglichst einfache, aber gleichzeitig leistungsstarke Umsetzungslogik. Das Kernproblem, an dem IMHO JAXB und andere verfügbare Frameworks scheitern ist der Umstand, dass Elemente anhand ihres Namens nicht eindeutig zugeordnet werden können - im obigen Beispiel ist <unterstruktur> nur mit dem Wissen aufzulösen, dass man sich das Kindelement <typ> angucken und dieses auf den Wert 1 bzw. 2 prüfen muss, eh man es einem Attribut zuordnet.

Von Java nach XML kann ich mir noch vorstellen, dass man das hinbekommt, aber umgekehrt wären im Mappingdokument umfangreiche XPath-Abfragen notwendig. Kennt jemand ein Framework, das sowas unterstützt? Bisher ist uns nur der Ansatz geblieben, das Problem händisch anzugehen. Bin aber prinzipiell offen für Vorschläge.

Vielen Dank für eure Anregungen!

MfG
Rouven

--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
  1. Hallo Rouven.

    Ohne es selbst ausprobiert zu haben, hört sich JiBX recht vielversprechend an:

    Use any class structure you want, so long as you can tell JiBX how to translate it to and from XML.

    Ich habe aber wie gesagt keine Erfahrung damit gemacht und bin auch bloß über eine Google-Suche darauf gestoßen. Aber vielleicht hilfts dir ja weiter. :)

    Servus,
    Flo