Maison > Java > javaDidacticiel > le corps du texte

Comment regrouper une carte vers un format XML personnalisé avec des éléments de valeur-clé à l'aide de JAXB ?

DDD
Libérer: 2024-11-13 03:38:02
original
265 Les gens l'ont consulté

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

Marshalling des cartes vers un format XML personnalisé à l'aide de JAXB

Question :

Comment pouvons-nous marshaler une carte dans un format XML personnalisé, où les paires clé-valeur sont représentées comme valeur éléments ?

Discussion :

L'approche JAXB par défaut pour le marshalling d'une carte génère du XML avec une structure comme :

<map>
  <entry>
    <key>KEY</key>
    <value>VALUE</value>
  </entry>
  <entry>
    <key>KEY2</key>
    <value>VALUE2</value>
  </entry>
</map>
Copier après la connexion

Cependant, parfois nous il peut être nécessaire que le XML soit dans un format personnalisé :

<map>
  <key>VALUE</key>
  <key2>VALUE2</key2>
</map>
Copier après la connexion

Solution 1 : Restreindre le contrat XML

Ceci n'est pas recommandé car cela rend les éléments XML dépendants du contenu d'exécution de la carte, ce qui n'est pas souhaitable pour l'utilisation de la couche d'interface. Au lieu de cela, nous suggérons d'utiliser un type énuméré comme clé pour la carte.

public enum KeyType {
  KEY,
  KEY2;
}

@XmlJavaTypeAdapter(MapAdapter.class)
Map<KeyType, String> mapProperty;
Copier après la connexion

Solution 2 : Simplifier la structure par défaut

Si nous souhaitons simplifier la structure générée par défaut structure en :

<map>
    <item key="KEY" value="VALUE"/>
    <item key="KEY2" value="VALUE2"/>
</map>
Copier après la connexion

Nous pouvons utiliser un adaptateur Map qui convertit la carte en un tableau de Éléments de carte :

class MapElements {
    @XmlAttribute
    public String key;
    @XmlAttribute
    public String value;
    
    ...
}

public class MapAdapter extends XmlAdapter<MapElements[], Map<String, String>> {
    ...
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal