Filtro em XML

6 respostas
R

Ola,

Preciso aplicar um filtro por nome nos dados do XML abaixo, da mesma forma que em um banco de dados:

<cadastro>
<item cod=“1” nome=“MARIA”>
<item cod=“2” nome=“MARCIO”>
<item cod=“3” nome=“ROBERTO”>
<item cod=“4” nome=“RONALDO”>
<cadastro>

Ex: Preciso dos registros que contenham MA no nome (MARIA e MARCIO) e jogar em uma lista de VO’s, que contém uma estrutura codigo e nome.

Alguém saberia como fazer isso ? Algum parser que faça este filtro ?

Obrigado

6 Respostas

diego2005

Bem,acho que você teria que ter uma classe Cliente, por exemplo:

public class Cliente {
    private int codigo;
    private String nome;

    // get's e set's
}

Ai você teria uma outra classe com um ArrayList, por exemplo, onde vc armazenaria todos os dados do arquivo XML:

public class ControlaXML {
    private List<Cliente> lista;

    public ControlaXML() {
        lista = new ArrayList<Cliente> ();
    }

    // faz a leitura dos dados..

    public List<Cliente> pesquisa(String value) {
        List<Cliente> listaAux = new ArrayList<Cliente> ();

        for(Cliente c : lista) {
            if(c.getNome().contains(value)) {
                listaAux.add(c);
            }
        }
       
        return listaAux; 
    }
}

É apenas uma sugestão.

T+

R

Caro Diego2005
Obrigado por responder.

No seu post, vc esta utilizando recursos da JAVA 5.
Estou na versão 1.3 que é a versão utilizada pela empresa onde trabalho.
Inclusive o método “contains” citado por vc eu não encontrei…

Vc tem outra sugestão ?

Obrigado.

R

Como não encontrei uma forma mágica de resolver, fiz o filtro lendo cada linha e utilizando o método indexOf da classe String.

diego2005

No lugar de:

private List<Cliente> lista = new ArrayList<Cliente> ();

Você pode fazer assim:

private List lista = new ArrayList();

Agora a questão do método contains eu não sei em qual versão ele foi adicionado.

T+

Marky.Vasconcelos

contains apartir da 1.4

R

Resolvi com o indexOf …

if (c.getNome().indexOf(valor) != -1) {

}

Criado 21 de agosto de 2007
Ultima resposta 22 de ago. de 2007
Respostas 6
Participantes 3