Maison  >  Article  >  Java  >  Comment rassembler une carte au format « valeur » dans JAXB ?

Comment rassembler une carte au format « valeur » dans JAXB ?

DDD
DDDoriginal
2024-11-21 08:59:09218parcourir

How to Marshal a Map into `value` Format in JAXB?

JAXB : regrouper une carte en value Format

Context

JAXB prend en charge nativement le regroupement d'une carte dans une structure comme celle-ci :

<map>
  <entry>
    <key> KEY </key>
    <value> VALUE </value>
  </entry>
  <entry>
    <key> KEY2 </key>
    <value> VALUE2 </value>
  </entry>
  ...
</map>

Cependant, dans certains cas, il peut être nécessaire de générer du XML là où le la clé devient un nom d'élément et la valeur devient son contenu, comme ceci :

<map>
  <key> VALUE </key>
  <key2> VALUE2 </key2>
 ...
</map>

Solution 1 : éviter les éléments dynamiques Noms

Il est généralement conseillé d'éviter ce type de génération XML car il introduit une dépendance sur le contenu de la carte au moment de l'exécution. Cela peut avoir un impact sur les contrats d'interface définis dans le schéma XML (XSD).

Envisagez plutôt d'utiliser un type énuméré comme clé de la carte pour garantir que les noms des éléments sont connus au moment de la compilation, permettant ainsi à JAXB de générer un schéma. qui restreint les éléments dans le XML.

Solution 2 : Personnalisation de la structure XML

Pour simplifier la structure générée par défaut en quelque chose comme :

<map>
    <item key="KEY" value="VALUE"/>
    <item key="KEY2" value="VALUE2"/>
</map>

Implémentez un MapAdapter personnalisé qui convertit la carte en un tableau de MapElements.

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!

Déclaration:
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