Heim >Java >javaLernprogramm >Wie kann ich eine Karte mit JAXB in „Wert'-Elemente marsallieren?
Karten werden üblicherweise in XML-Strukturen gemarshallt wie:
<map> <entry> <key>KEY</key> <value>VALUE</value> </entry> <entry> <key>KEY2</key> <value>VALUE2</value> </entry> ... </map>
Manchmal ist es jedoch wünschenswert, XML zu generieren, bei dem der Schlüssel zum Elementnamen wird und der Wert wird zu seinem Inhalt:
<map> <KEY>VALUE</KEY> <KEY2>VALUE2</KEY2> ... </map>
Option 1: Dynamisch benannte XML-Elemente
Die Verwendung dynamischer Attributnamen wird nicht empfohlen, da sie gegen die Prinzipien des XML-Schemas und des Schnittstellenvertrags verstößt.
Option 2: Aufgezählter Schlüsseltyp
Um einen strengen Schnittstellenvertrag aufrechtzuerhalten, verwenden Sie einen Aufzählungsschlüsseltyp für Karte:
public enum KeyType { KEY, KEY2; } @XmlJavaTypeAdapter(MapAdapter.class) Map<KeyType, String> mapProperty;
Option 3: Vereinfachtes Marshalling
Um die Standard-Marshalling-Struktur in class MapElements {
@XmlAttribute
public String key;
@XmlAttribute
public String value;
// Required by JAXB
private MapElements() {}
public MapElements(String key, String value) {
this.key = key;
this.value = value;
}
}
class MapAdapter extends XmlAdapter
Das obige ist der detaillierte Inhalt vonWie kann ich eine Karte mit JAXB in „Wert'-Elemente marsallieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!