Bom dia.
Alguém poderia ajudar em como fazer um loop que percorra um xml?
Estou fazendo da seguinte maneira, e assim consigo pegar o primeiro indivíduo.
Porém na próxima passagem do loop, preciso pegar o próximo indivíduo, e assim por diante, até percorrer todos os indivíduos, e é nesta parte que fiquei ‘agarrado’…
No seu outro post vc falou que está usando o XStream.
Sendo assim pq vc não está conseguindo ler?
Esse é o código de uma aplicação minha…
XStream xstream = new XStream();
Avaliacao av = new Avaliacao();
// define as classes para as tags
xstream.alias( "avaliacao", Avaliacao.class );
xstream.alias( "caracteristicas", Caracteristicas.class );
xstream.alias( "perguntas", Perguntas.class );
xstream.alias( "pergunta", Pergunta.class );
xstream.alias( "respostas", Respostas.class );
xstream.alias( "resposta", Resposta.class );
// define os campos que são ArrayList nas classes
xstream.addImplicitCollection( Perguntas.class, "pergunta" );
xstream.addImplicitCollection( Respostas.class, "resposta" );
// carrega o xml criando as classes
xstream.fromXML( "XML AQUI", av );
Avaliação é a classe que representa a tag root. Dentro da avaliação tenho
Caracteristicas (apenas atributos String), Perguntas (um ArrayList de Pergunta), Pergunta (atributos String), Respota(um ArrayList de Respostas), Respostas (atributos string).
Dá uma olhadinha nos exemplos do XStream e usa o que eu estou te passando q vc vai conseguir.
Eu já uso o xstream sim, e está funcionando bem, minha dúvida foi só em relação a como recuperar varias tags com nome igual no xml. Ele está dando um erro justamente de campo duplicado
Mensagem no console:
[quote]---- Debugging information ----
duplicate-field : individuo
class : actions.Page
required-type : actions.Individuos
path : /page/individuos/individuo[2]
line number : 1
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException: individuo
---- Debugging information ----
duplicate-field : individuo[/quote]
Preciso fazer algo como: private Individuo[] individuo;
Lí sim…obrigado.
Porém pelo que ví no site do xstream, o método addImplicitCollection() serve para esconder a tag com o nome de um objeto: ( xstream site tuto )
[quote]Omit the ‘entries’ tag
Now let’s implement what was called an implicit collection: whenever you have a collection which doesn’t need to display it’s root tag, you can map it as an implicit collection.
In our example, we do not want to display the entries tag, but simply show the entry tags one after another.
A simple call to the addImplicitCollection method shall configure XStream and let it know that we do not want to write the entries tag.[/quote]
Se este método também guarda arrayLists como você disse, eu não sei, pois o único resultado que eu estou tendo com este método é exatamente o de omitir as tags.
Talvez a solução não esteja exatamente aí.
por curiosidade, conseguiu resolver este problema??
Estou recebendo o mesmo erro(duplicate-field) em uma rotina simples (AQUI MEU ERRO), e imagino ser algo realmente simples de resolver tb.