Verwenden Sie den Stiltyp JAXB XMLAnyElement, um dynamische Elementnamen zurückzugeben
Ich habe viele Antworten in diesen Foren sowie in anderen Blog-Posts gelesen, aber ich kann die Teile scheinbar nicht ganz miteinander verbinden.
Wir beginnen also mit einem einfachen POJO mit Map-Eigenschaften. Es ist gut bekannt, wie man dies verpackt, aber das bringt einen gewissen Wert. Ich suche nach dem Namen (a.k.a. label) und mache es zu einem gültigen XML-Attribut. Also würden wir etwas Wert bekommen.
Ich habe ein Beispiel gefunden (wird verlinkt, wenn ich es wiederfinde):
@XmlAnyElement
public List<JAXBElement<String>> getXmlProperties() {
List<JAXBElement<String>> elements = new ArrayList<JAXBElement<String>>();
for (Map.Entry<String, String> property: properties.entrySet())
elements.add(new JAXBElement<String>(new QName(property.getKey()),
String.class, property.getValue()));
return elements;
}
Dies hat perfekt funktioniert, aber ich hatte dies in meiner Bean / Pojo-Klasse, die mit einem GWT-Frontend geteilt wird, und kann daher keine Verweise auf JAXBElement und QName (Quellcode erforderlich) enthalten.
Gibt es eine Möglichkeit, mit etwas wie dem XmlAdapter und dem JAXBElement / QName / XmlAnyElement-Dream-Team ein ähnliches Ergebnis zu erzielen? Übrigens benutze ich RESTEasy, wenn das überhaupt zählt.
Hier ist der Forumsbeitrag mit dem @ XmlAnyElement + JAXBElement:Dynamische Tagnamen mit JAXB