Filtro em XML

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

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

[code]public class Cliente {
private int codigo;
private String nome;

// get's e set's

}[/code]

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

[code]public class ControlaXML {
private List 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; 
}

}[/code]

É apenas uma sugestão.

T+

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.

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.

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+

contains apartir da 1.4

Resolvi com o indexOf …

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

}