Heim >Java >javaLernprogramm >Wie kann ich mithilfe von JAXB eine Karte in ein benutzerdefiniertes XML-Format mit Schlüsselwertelementen marshallieren?

Wie kann ich mithilfe von JAXB eine Karte in ein benutzerdefiniertes XML-Format mit Schlüsselwertelementen marshallieren?

DDD
DDDOriginal
2024-11-13 03:38:02362Durchsuche

How to Marshal a Map to a Custom XML Format with Key-Value Elements Using JAXB?

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 value Elemente?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn