2010-10-27 12 views
1

Compte tenu d'un schéma comme celui-ci:Puis-je configurer les liaisons xjc pour générer des collections comme Set au lieu de la liste

<xs:element name="Group" type="GroupType"/> 

<xs:complexType name="GroupType"> 
    <xs:sequence> 
     <xs:element type="OptionsType" name="Options" maxOccurs="1" minOccurs="1"/> 
     <xs:element type="PageContainerType" name="PageContainer" maxOccurs="unbounded" minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="PageContainerType"> 
    <xs:sequence> 
     ... 
    </xs:sequence> 
</xs:complexType> 

XJC va générer Java quelque chose comme:

public class GroupType { 
    @XmlElement(name = "Options", required = true) 
    protected OptionsType options; 
    @XmlElement(name = "PageContainer") 
    protected List<PageContainerType> pageContainer; 
    ... 
} 

Je veux faire respecter un cadre unique collection pour l'élément PageContainer. C'est un projet d'ingénierie inverse, donc je ne m'inquiète pas trop de m'assurer que le schéma l'applique explicitement.

Est-il possible de générer l'élément PageContainer en tant que Set<PageContainerType>, en spécifiant quelque chose dans le schéma ou dans les liaisons XJC?

Répondre

1

Les temps d'exécution JAXB (atleast Metro et MOXy) peuvent gérer les propriétés de type java.util.Set. Pour voir un exemple:

Les deux implémentations de métro et de Moxy JAXB utilisent le même outil de XJC pour compiler des schémas XML en classes Java. Vous voudrez peut-être poser votre question sur le forum suivant:

Vous pourriez également être en mesure d'obtenir le résultat souhaité en écrivant un plugin XJC: