JAXB: Überflüssiges Wrapper-Tag für Map-Einträge

Naryxus

Aktives Mitglied
Hey Leute,

ich versuche mit JAXB XML-Elemente auf eine Map zu mappen.

Mein Ziel wäre ein XML-Dokument wie:
HTML:
<root>
   <element id="42">
      <tag k="foo" v="bar"/>
      <tag k="bar" v="foo"/>
   </element>
</root>

Dafür habe ich die folgende Element-Klasse:
Java:
class Element {

   @XmlAttribute
   private int id

   @XmlJavaTypeAdapter(MapAdapter.class)
   private Map<String, String> tags = new HashMap<>();

   //...
}

Die Map habe ich entsprechend http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html gemappt. Dafür gab es die Wrapper-Klasse:
Java:
class Tagmap {

   @XmlElement(name="tag")
   private List<Tag> tags = new ArrayList<>();

   //...
}

Der Vollständigkeit halber noch die Tag-Klasse:
Java:
class Tag {

   @XmlAttribute(name="k")
   private String key;

   @XmlAttribute(name="v")
   private String value;

   //...
}

Sowohl die Tag-Klasse als auch die Map-Adapter-Klasse machen ihren Job gut.
Mein Problem ist, dass dieses Design folgendes XML-Dokument erzeugt:
HTML:
<root>
   <element id="42">
      <tags>
         <tag k="foo" v="bar"/>
         <tag k="bar" v="foo"/>
     </tags>
   </element>
</root>

Das zusätzliche "tags"-Tag ist jedoch zuviel für meine Anwendung. Ich habe leider einige Constraints vorgegeben und kann die Struktur der XML-Dokumente nicht verändern.
Gibt es eine Möglichkeit die Erzeugung dieses Tags zu verhindern?

Grüße
 

Neue Themen


Zurück
Oben