Ci sono alcuni casi d'uso in cui un JAXBElement
è richiesto:
- Un elemento è sia
nillable="true"
eminOccurs="0"
. In questo caso cosa significanull
sul campo mappato/proprietà significa? Quando la proprietà èJAXBElement
un valore nullo significa che l'elemento non è presente e unJAXBElement
wrapping null significa un elemento XML conxsi:nil="true"
. - Ci sono 2 elementi globali con lo stesso tipo complesso denominato. Poiché in JAXB le classi corrispondono a tipi complessi è necessario un modo per catturare quale elemento radice è stato incontrato. Per maggiori dettagli, vedere questo articolo ho scritto.
- Esiste una struttura di scelta in cui
foo
obar
possono verificarsi elementi e sono dello stesso tipo. Qui unJAXBElement
è richiesto perché incontra semplicemente unaString
il valore non è sufficiente per indicare quale elemento deve essere sottoposto a marshalling. - Un elemento con
xsi:nil
si incontra nel documento che contiene gli attributi. In questo esempio l'oggetto corrispondente a quell'elemento può ancora essere deselezionato per contenere i valori degli attributi, ma JAXBElement può comunque indicare che l'elemento era nullo.