Maison >Java >javaDidacticiel >Comment marshall une carte en XML avec la clé comme nom d'élément dans JAXB ?

Comment marshall une carte en XML avec la clé comme nom d'élément dans JAXB ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 19:09:03444parcourir

How to Marshall a Map to XML with Key as Element Name in JAXB?

Marshall une carte vers XML avec la clé comme nom d'élément

JAXB fournit un moyen pratique de mapper des objets en XML. Cependant, pour une carte, il la rassemble généralement dans une structure avec éléments contenant et éléments.

Dans certains cas, vous souhaiterez peut-être rassembler la carte en XML avec les clés comme noms d'éléments et les valeurs comme contenu d'élément.

Adressage des noms d'attributs dynamiques

L'approche recommandée fournie par les développeurs JAXB pour gérer le marshalling et le démarshalling personnalisé implique l'utilisation d'un XmlAdapter. Cependant, la mise en œuvre de l'adaptateur pour gérer les noms d'attributs dynamiques peut s'avérer difficile.

Solutions alternatives

Bien que la génération d'un tel XML soit généralement déconseillée en raison de son impact sur le contrat d'interface, il Voici quelques solutions possibles :

1. Utiliser un type énuméré pour les clés :

Définissez un type énuméré pour les clés de la carte. Cela garantit que le XSD inclut une liste d'éléments connus au moment de la compilation.

2. Simplifiez la structure par défaut :

Utilisez un MapAdapter pour convertir la carte en un tableau de MapElements contenant des attributs de clé et de valeur. Cela simplifie la structure XML en une liste de éléments avec des attributs de clé et de valeur.

Conclusion

Bien qu'il ne soit pas recommandé de générer du XML avec des noms d'éléments dynamiques, les alternatives fournies offrent des solutions pour des scénarios spécifiques où ce comportement est souhaité.

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