Marshalling von Karten in benutzerdefiniertes XML-Format mit JAXB
Frage:
Wie können wir das Marshallen durchführen? eine Zuordnung in ein benutzerdefiniertes XML-Format, in dem die Schlüssel-Wert-Paare als dargestellt werden
Diskussion:
Der standardmäßige JAXB-Ansatz zum Marshallen einer Karte generiert XML mit einer Struktur wie:
<map> <entry> <key>KEY</key> <value>VALUE</value> </entry> <entry> <key>KEY2</key> <value>VALUE2</value> </entry> </map>
Aber manchmal tun wir Möglicherweise muss das XML in einem benutzerdefinierten Format vorliegen:
<map> <key>VALUE</key> <key2>VALUE2</key2> </map>
Lösung 1: Einschränken des XML-Vertrags
Dies wird nicht empfohlen, da dadurch die XML-Elemente vom Laufzeitinhalt der Karte abhängig werden, was für die Verwendung der Schnittstellenebene unerwünscht ist. Stattdessen empfehlen wir die Verwendung eines Aufzählungstyps als Schlüssel für die Karte.
public enum KeyType { KEY, KEY2; } @XmlJavaTypeAdapter(MapAdapter.class) Map<KeyType, String> mapProperty;
Lösung 2: Standardstruktur vereinfachen
Wenn wir den generierten Standard vereinfachen möchten Struktur zu:
<map> <item key="KEY" value="VALUE"/> <item key="KEY2" value="VALUE2"/> </map>
Wir können einen Kartenadapter verwenden, der die Karte in ein Array von konvertiert MapElements:
class MapElements { @XmlAttribute public String key; @XmlAttribute public String value; ... } public class MapAdapter extends XmlAdapter<MapElements[], Map<String, String>> { ... }
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von JAXB eine Karte in ein benutzerdefiniertes XML-Format mit Schlüsselwertelementen marshallieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!