Question:
I have a problem that I can't store more than one element in the same TAG, look at the XML:
<ItemCardapio>
<nCdItemCardapio>10</nCdItemCardapio>
<nQtdeItemCardapio>2</nQtdeItemCardapio>
<ObsProducao>
<sDsObservacaoProducao>Com Gelo</sDsObservacaoProducao>
</ObsProducao>
<ObsProducao>
<sDsObservacaoProducao>Sem Açucar</sDsObservacaoProducao>
</ObsProducao>
</ItemCardapio>
As you can see, the "ObsProduction" TAG repeats, instead of looking like this:
<ItemCardapio>
<nCdItemCardapio>10</nCdItemCardapio>
<nQtdeItemCardapio>2</nQtdeItemCardapio>
<ObsProducao>
<sDsObservacaoProducao>Com Gelo</sDsObservacaoProducao>
<sDsObservacaoProducao>Sem Açucar</sDsObservacaoProducao>
</ObsProducao>
</itemcardapio>
Here is the class with the JAXB annotations:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"nCdItemCardapio",
"nQtdeItemCardapio",
"obsProducao"
})
public static class ItemCardapio {
protected int nCdItemCardapio;
protected int nQtdeItemCardapio;
@XmlElement(name = "ObsProducao")
protected List<WsTSPaymentParamPedido.ItemCardapio.ObsProducao> obsProducao;
..........
Now the class that repeats:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"sDsObservacaoProducao"
})
public static class ObsProducao {
protected String sDsObservacaoProducao;
......
Answer:
Since your ObsProducao
class is just a wrapper for a String
, you can eliminate it completely:
@XmlElementWrapper(name = "ObsProducao")
@XmlElement(name = "sDsObservacaoProducao")
protected List<String> obsProducao;
The @XmlElementWrapper
will generate a wrapper called ObsProducao
, the @XmlElement
will make each item within the list generate an element called sDsObservacaoProducao
, so the result will be what you expect:
<ObsProducao>
<sDsObservacaoProducao>Com Gelo</sDsObservacaoProducao>
<sDsObservacaoProducao>Sem Açucar</sDsObservacaoProducao>
</ObsProducao>