# JAXB und viele verschachtelte Attribute



## sp19 (21. Mrz 2010)

Hallo,
ich benutze zwar schon eine ganze Weile JAXB zum lesen von einfachen XML-Dateien, da sich das ganze recht schnell über die Annotations realisieren lässt. Aber gerade, nachdem mir eine etwas umfangreichere XML-Datei untergekommen ist, wirkt die realisierung doch recht umständlich...daher bin ich mir nicht so sicher, ob der Fehler nicht einfach bei mir liegt.

Hier mal das bsp, was mein Problem in etwa verdeutlicht:
[XML]
<ebene1 e1="">
	<ebene2 e2="">
		<ebene3 e3="">
			<ebene4 e4="">
			</ebene4>
		</ebene3 e3="">
	</ebene2 e2="">
</ebene1>[/xml]
Die dazugehörigen Klassen würden so aussehen:
[Java]@XmlRootElement(name = "ebene1")
class Ebene1 {
	@XmlAttribute String e1;
	Ebene2 ebene2;
}
class Ebene2 {
	@XmlAttribute String e2;
	Ebene3 ebene3;
}
class Ebene3 {
	@XmlAttribute String e3;
	Ebene4 ebene4;
}
class Ebene4 {
	@XmlAttribute String e4;
}[/code]


Meine Frage ist nun, ob es wirklich nötig ist, für jedes verschachtelte Element eine eigene Klasse zu erstellen? Könnte man das ganze nicht irgendwie über die Annotations so definieren, dass eine einzelne Klasse sämtliche Informationen aufnimmt? Wie z.B.:

[Java]@XmlRootElement(name = "ebene1")
class Ebene1 {
	@XmlAttribute String e1;
	@XmlAttribute String e2;
	@XmlAttribute String e3;
	@XmlAttribute String e4;
}[/Java]


----------



## Noctarius (21. Mrz 2010)

Ja ist es. Alternativ kannst du auch InnerClasses bilden, der Effekt ist der Selbe.

Willst du unbedingt alles so einlesen wie du es gezeigt hast, musst du dir für den Typ Ebene1 einen eigenen XmlTypeAdapter bauen welcher die Daten passend zusammenbaut.

Da gibt's ein Beispiel wie man mit sowas umgeht: http://www.java-forum.org/xml-co/94533-jaxb-marshalling.html#post600849


----------

