Comment conseiller à xjc de générer une liste Java au lieu d'une classe imbriquée


J'ai un morceau de XSD se lit comme ci-dessous

<xs:schema ...>
    <xs:element name="order" type="tns:order/>
    <xs:complexType name="order">
        <xs:sequence>
            <xs:element .../>
            <xs:element name="itemList" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="item" type="tns:item" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="item">
        <xs:sequence>
            ...
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Par défaut, une classe Order est générée avec une classe Order imbriquée.ItemList. La signature du champ itemList dans la classe Order est:

protected Order.ItemList itemList;

Cependant, je m'attends à ce que le type d'itemList soit java.util.Liste, c'est à dire

protected List<Item> itemList;

Comment puis-je y parvenir via le fichier de liaison externe? Je suis conscient de ce lien mais la réponse acceptée ne fonctionne pas pour moi car Je n'ai aucun contrôle sur ce schéma (c'est une partie d'un WSDL)

Author: Community, 2014-01-31

1 answers

Vous devez annoter votre Liste itemList avec @XmlElementWrapper. Vous pouvez le faire de deux façons:

  • Manuellement (pas une option si vous générez automatiquement les classes à partir du schéma, c'est-à-dire en utilisant xjc)
  • Avec le plugin jaxb-xew-plugin.

    Le plugin est utilisé avec le xjc à partir de la ligne de commande ou d'une tâche Ant ou via maven-jaxb2-plugin.

Liés réponses:

 1
Author: gabrielgiussi, 2017-05-23 12:10:22