V jednom z předchozích příspěvků jsem se věnoval základní práci s JAXB, kde jsem používal pouze dvě anotace a to @XmlRootElement a @XmlType. Podívejme se na část vytvořeného xml souboru.
<company>
<centers>
<code>METPRG</code>
<description>Office center Metronom in Prague</description>
<rooms>
<code>A02</code>
<numberOfSeats>14</numberOfSeats>
</rooms>
<rooms>
<code>A13</code>
<numberOfSeats>42</numberOfSeats>
</rooms>
<rooms>
<code>B08</code>
<numberOfSeats>22</numberOfSeats>
</rooms>
</centers>
<centers>
<code>AVIPRG</code>
<description>Office center Aviatica in Prague</description>
<rooms>
<code>AA41</code>
<numberOfSeats>70</numberOfSeats>
</rooms>
<rooms>
<code>CA12</code>
<numberOfSeats>38</numberOfSeats>
</rooms>
...
Company obsahuje seznam elementů center a ty v sobě mají seznam elementů room. Když se podíváte pečlivěji, uvidíte, že každý element center se jmenuje centers a každý element room se jmenuje rooms. Určitě by to lépe vypadalo, kdyby se tyto elementy jmenovaly center a room. Nebo možná ještě lépe, kdyby se element center jmenoval jednoznačněji business_center. Jak center tak room obsahují element code. Bylo čitelnější, kdyby se jmenovaly center_code a room_code. A také kořenový element company by mohl obsahovat ještě atribut s názvem společnosti. To vše je možné, když použijeme další anotace, které JAXB nabízí.
Anotace @XmlAccessorType říká, že každý field (nestatická a netransientní proměnná – to jsou v tomto příkladu všechny) bude svázán s xml elementem.
Anotaci @XmlElementWrapper použijeme, když pracujeme se seznamem. Vytvoříme element, který bude v sobě obsahovat jednotlivé elementy seznamu.
Anotace @XmlAttribute nevytvoří xml element, ale atribut. Pomocí hodnoty, kterou přiřadíme do name nastavíme atributu název.
Když použijeme anotaci @XmlElement, můžeme předat hodnotu name a tím nastavíme názvem xml elementu.
Jasnější to bude na příkladu.