Pessoal eu recebo um xml de um web server, ele vem com atributo repitidos e fora de uma tag lista, exemplo do manual aqui no guj, tenho esse xml
<list>
<Pessoa>
<email>vinci_amorim@yahoo.com.br</email>
<foneComercial class="Telefone">
<ddd>55</ddd>
<numero>5555 5555</numero>
</foneComercial>
<nome>Vinci Pegoretti Amorim</nome>
</Pessoa>
</list>
e repitir as tags pessoa, para cada pessoa nova assim:
[code]
vinci_amorim@yahoo.com.br
55
5555 5555
Vinci Pegoretti Amorim
aaaaa@yahoo.com.br
55
5555 5555
aaaaa
[/code]
mas recebo assim do webserver
<Pessoa>
<email>vinci_amorim@yahoo.com.br</email>
<foneComercial class="Telefone">
<ddd>55</ddd>
<numero>5555 5555</numero>
</foneComercial>
<nome>Vinci Pegoretti Amorim</nome>
</Pessoa>
<Pessoa>
<email>vinci_amorim@yahoo.com.br</email>
<foneComercial class="Telefone">
<ddd>55</ddd>
<numero>5555 5555</numero>
</foneComercial>
<nome>Vinci Pegoretti Amorim</nome>
</Pessoa>
<Pessoa>
<email>vinci_amorim@yahoo.com.br</email>
<foneComercial class="Telefone">
<ddd>55</ddd>
<numero>5555 5555</numero>
</foneComercial>
<nome>Vinci Pegoretti Amorim</nome>
</Pessoa>
<Pessoa>
<email>vinci_amorim@yahoo.com.br</email>
<foneComercial class="Telefone">
<ddd>55</ddd>
<numero>5555 5555</numero>
</foneComercial>
<nome>Vinci Pegoretti Amorim</nome>
</Pessoa>
não tem uma tag lista abrindo ou fechado as tags pessoas, alguem pode me ajudar a como dizer ao Xstrem que a tag Pessoa é uma lista de pessoa?
Exemplo real eu recebo esse xml:
<obterListaVoosSaida>
<jsessionid>ac1001b41faa866509f2f36d4c04834493eaddbfa798</jsessionid>
<dsObservacao>
<tsPartida>12MAR</tsPartida>
<sgSemanaPartida>MON</sgSemanaPartida>
<sgAeroportoOrigem>CGH</sgAeroportoOrigem>
<cdFusoHorarioPartida>Z-3</cdFusoHorarioPartida>
<sgAeroportoDestino>SDU</sgAeroportoDestino>
<qtHoraLocalDiferenca>$0</qtHoraLocalDiferenca>
<dsTextoLivre></dsTextoLivre>
</dsObservacao>
<viagem>
<vlTotalTarifa></vlTotalTarifa>
<voo>
<adLinhaItem>1</adLinhaItem>
<cdEmpresaAereaVoo>JJ</cdEmpresaAereaVoo>
<cdNumeroVoo>3932</cdNumeroVoo>
<assentos>
<dsDisponibilidade>
<clClasseReserva>Y</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
<dsDisponibilidade>
<clClasseReserva>S</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
</assentos>
<cdEquipamento>319</cdEquipamento>
<cdRefeicao>R</cdRefeicao>
<qtParadas>0</qtParadas>
<dsDiasOperacao>XJS</dsDiasOperacao>
<cdIndicadorBilheteEletronico>E</cdIndicadorBilheteEletronico>
</voo>
</viagem>
<viagem>
<vlTotalTarifa></vlTotalTarifa>
<voo>
<adLinhaItem>2</adLinhaItem>
<cdEmpresaAereaVoo>JJ</cdEmpresaAereaVoo>
<cdNumeroVoo>3934</cdNumeroVoo>
<assentos>
<dsDisponibilidade>
<clClasseReserva>Y</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
<dsDisponibilidade>
<clClasseReserva>N</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
</assentos>
<cdEquipamento>319</cdEquipamento>
<cdRefeicao>R</cdRefeicao>
<qtParadas>0</qtParadas>
<dsDiasOperacao>XS</dsDiasOperacao>
<cdIndicadorBilheteEletronico>E</cdIndicadorBilheteEletronico>
</voo>
<voo>
<adLinhaItem>2</adLinhaItem>
<cdEmpresaAereaVoo>JJ</cdEmpresaAereaVoo>
<cdNumeroVoo>3934</cdNumeroVoo>
<assentos>
<dsDisponibilidade>
<clClasseReserva>Y</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
<dsDisponibilidade>
<clClasseReserva>N</clClasseReserva>
<qtAssentosDisponiveis>7</qtAssentosDisponiveis>
</dsDisponibilidade>
</assentos>
<cdEquipamento>319</cdEquipamento>
<cdRefeicao>R</cdRefeicao>
<qtParadas>0</qtParadas>
<dsDiasOperacao>XS</dsDiasOperacao>
<cdIndicadorBilheteEletronico>E</cdIndicadorBilheteEletronico>
</voo>
</viagem>
</obterListaVoosSaida>
vcs podem reparar que existe tags viagem que se repetem e dentro da tag viagem existe a tag voo que se repete, alguem pode me ajudar a como serializar esse xml em obj.
Crie um bean que contém um arrayList do outro exemplo:
Ex:
private ArrayList<ItemDTO> itens;
public ArrayList<ItemDTO> getItens() {
return itens;
}
public void setItens(ArrayList<ItemDTO> itens) {
this.itens = itens;
}
Transformando em xml
public static void main(String[] args) {
XStream xstream = new XStream();
xstream.alias("envelope", EnvelopeDTO.class);
xstream.alias("item", ItemDTO.class);
ArrayList<ItemDTO> itens = new ArrayList<ItemDTO>();
EnvelopeDTO envelope = new EnvelopeDTO();
for(int i=0;i<10;i++){
ItemDTO iten= new ItemDTO();
iten.setValorTotal(i);
iten.setQtd(i+1);
itens.add(iten);
envelope.setItens(itens);
}
System.out.println(xstream.toXML(envelope));
}
Resultado ficaria assim:
<envelope>
<itens>
<item>
<qtd>1</qtd>
<uni>0.0</uni>
<t>0.0</t>
</item>
<item>
<qtd>2</qtd>
<uni>0.0</uni>
<t>1.0</t>
</item>
<item>
<qtd>3</qtd>
<uni>0.0</uni>
<t>2.0</t>
</item>
<item>
<qtd>4</qtd>
<uni>0.0</uni>
<t>3.0</t>
</item>
<item>
<qtd>5</qtd>
<uni>0.0</uni>
<t>4.0</t>
</item>
<item>
<qtd>6</qtd>
<uni>0.0</uni>
<t>5.0</t>
</item>
<item>
<qtd>7</qtd>
<uni>0.0</uni>
<t>6.0</t>
</item>
<item>
<qtd>8</qtd>
<uni>0.0</uni>
<t>7.0</t>
</item>
<item>
<qtd>9</qtd>
<uni>0.0</uni>
<t>8.0</t>
</item>
<item>
<qtd>10</qtd>
<uni>0.0</uni>
<t>9.0</t>
</item>
</itens>
</envelope>