Ich habe ein Objekt, das ich marshallen möchte.
%Vor%Nehmen wir nun an, wir haben ein boxItem = new BoxItem ()
Wenn ich jaxbMarshaller.marshal (boxItem, System.out); aufrufe, sind die Werte für jeden Eintrag leer.
%Vor%Wie marshall die Elemente innerhalb der ArrayList in einem Map-Wert?
Sie sollten @XmlElementWrapper Anmerkungen verwenden. Sie werden verwendet, um ein Wrapper-XML-Element um Collections
Definieren Sie einen Wrapper für Ihre ArrayList
wie unten,
Definieren Sie Ihre Karte wie folgt in BoxItem
class,
Hier ist die komplette Klasse.
%Vor%Beim Ausführen des obigen Befehls sollte die folgende Ausgabe angezeigt werden:
%Vor% Jayamohans Antwort funktioniert und ist vielleicht die bevorzugte Lösung. Wenn Sie jedoch jemals die RootElement-Klasse (BoxItem) nicht ändern möchten, können Sie Ihre eigene XmlAdapter
schreiben, damit JAXB weiß, wie behandelt Fälle wie Map<Integer, ArrayList<String>>
.
Siehe Wie Mars Map & lt; String, List & lt; Objects & gt; & gt; ; mit JAXB zum Schreiben eines eigenen XmlAdapter