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
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>
Cependant, parfois nous il peut être nécessaire que le XML soit dans un format personnalisé :
<map> <key>VALUE</key> <key2>VALUE2</key2> </map>
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;
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>
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>> { ... }
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!