# aus XML mit JAXB zu Baumstruktur



## sabi (21. Sep 2011)

Hallo,

ich sitze hier vor einem XML welches hierarchische Beziehungen beschreibt und ungefähr so aussieht:

```
<stuff>
<depth1>
<something index="1">aaa</something>
  <depth2>
    <something index="11">aaabbb</something>
      <depth3><something index="112">abc</something></depth3>
      <depth3><something index="01">zzz</something></depth3>
    <something index="22">aaaabb</something>
  <depth2>
<something index="789">aa</something>
<depth1>
<depth1>
....
</depth1>
</stuff>
```

Die <depthXX> kann biss 100 gehen und ist pro Knoten verschieden. Auserdem ist es nicht möglich
diese Struktur zu ändern. (Ich würde z.B. alle Knoten gleich nennen und ein 'parent' Attribut hinzufügen).
Nun muss ich dieses XML in eine Java Klasse bringen.
Aufgrund der Baumstruktur der Daten dachte ich an etwas einfaches wie:

```
public class Stuff {
    Stuff parent;
    String id;
    String content;
    Vector<Stuff> childs;
}
```

Ist es mit JAXB irgendwie möglich das zu lösen ohne zig Klassen zu erstellen mit @XmlElement(name="depth1"), @XmlElement(name="depth2") etc.?
Im idealfall hätte ich zum Schluss gerne 1 Stuff Objekt an dem als childs alle Knoten der depth1 hängen, das keinen parent, keine id und keinen content hat. Von diesem kann ich dann durch den gesamten Knoten navigiere.

Gibt es da einen tollen Weg dafür?
Die einfachen JAXB Tutorials behandeln zwar wie man Listen einliest, aber nicht wie
man für solch eine Struktur vorgeht.

sabi


----------



## Wildcard (21. Sep 2011)

Mitt EMF kannst du das machen, musst aber eine Methode im XMLHelper überschreiben um depthX auf das richtige Attribut zu mappen (also etwa 10 Zeilen Code würde ich schätzen).


----------



## DerEisteeTrinker (22. Sep 2011)

Man kann es auch mit dem XMLWriter machen. Dürften auch vllt 10 Zeilen sein


----------



## Wildcard (22. Sep 2011)

DerEisteeTrinker hat gesagt.:


> Man kann es auch mit dem XMLWriter machen. Dürften auch vllt 10 Zeilen sein



Dann ist die XML aber nicht an Java Objekte gebunden.


----------

