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
Freigeben: 2024-11-13 03:38:02
Original
353 Leute haben es durchsucht

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>
Nach dem Login kopieren

Aber manchmal tun wir Möglicherweise muss das XML in einem benutzerdefinierten Format vorliegen:

<map>
  <key>VALUE</key>
  <key2>VALUE2</key2>
</map>
Nach dem Login kopieren

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;
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>> {
    ...
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage