kXML Framework

Olá pessoal,

Essa semana estava fazendo algumas buscas na web com o intuito de encontrar alguma maneira de realizar parsers em arquivos XMLs de forma simples e fácil para o ambiente J2ME. Deparei-me com o kXML e achei realmente fácil de usar. Neste post mostrarei um pouquinho deste framework, compartilhando minha experiência.

Introdução

O kXML é um framework bastante enxuto que implementa a API XmlPull e combina o que há de melhor no SAX e DOM, por este motivo é principalmente indicado para ambientes com pouco recursos, como J2ME (MIDlets) e para algumas aplicações J2EE (Applets). O kXML esta na sua versão 2 (versão 3 em desenvolvimento) e é disponibilizado para uso conforme a licença BSD, podendo ser baixado aqui.

Exemplo

Neste simples exemplo irei realizar a leitura de um arquivo XML e exibir o seu conteúdo.  Para focar o entendimento no framework, a aplicação não será desenvolvida em J2ME (fica para um próximo post :b), mas sim em J2SE, já que é o ambiente mais comum, principalmente para os programadores Java iniciantes.

Então vamos lá

Primeiramente você deve possuir o kXML que pode ser baixado no link passado acima.

Depois de baixar o jar adicione-o em seu projeto. No meu caso fiz no IDE Eclipse e pude adicioná-lo da seguinte forma:

Clique com o botão direito do mouse sobre o seu projeto e vá a “Properties”, em seguida acesse “Java Build Path”, clique no botão “Add External JARs” e selecione o jar. Como na figura abaixo:

Properties

Agora com o kXML adicionado ao projeto, já podemos fazer uso das classes e métodos do framework.

Antes de iniciar com a implementação, veja a estrutura do arquivo XML, de nome “livraria.xml” utilizado no exemplo:

xml

O código a seguir ira exibir as informações encontradas no arquivo XML. Veja abaixo:

codigo1codigo2

Entendendo o Código

Ao executar este exemplo o método main da classe TesteKxml é chamado, aqui é criado uma instancia da classe TesteKxml, para invocar o método livrariaParser().

Obs.: O método livrariaParser() só pode ser chamado dentro do método main pela variável de instancia t (como na linha 47), pois ao contrario do método livrariaParser() o método main é estático.

Na sequencia, no método livrariaParser() é realizado uma instância de um objeto da classe KXmlParser (linha 15) que recebe o XML para leitura (linha 16).

As linhas 18 e 19 posicionam o parser na tag livraria, em seguida, o loop entre as linhas 21-25 chamam o método livroParser() para cada livro encontrado. Note que é indicado a tag de inicio e fim com o método require, passando as constantes START_TAG e END_TAG (linhas 22 e 24).

Já o método livroParser() recebe como argumento um parser da classe KXmlParser, e percorre todas as tags dentro de livro, independentemente da quantidade ou dos nomes das tags. Isso é possível com o loop entre as linhas 35-39, veja que no método require (linha 36) não é informado a tag inicio como parâmetro, mas sim null. A linha 37 imprime o nome da tag e o texto contido na mesma, com os métodos getName() e getText() respectivamente, ambos da classe KXmlParser. Finalmente, para indicar a tag final, novamente uso método getName() da classe KXmlParser para retorna a tag atual para o método require (linha 38).

Ao executar você irá obter a seguinte saída, se tudo estiver certo claro :b.

saida

Obs: O arquivo livraria.xml neste caso deve estar no mesmo diretório que os fontes, caso contrario você deve informar o caminho correto para que a sua aplicação o encontre.

Este foi um exemplo bem simples, seria bem interessante possuir outra classe chamada Livro que definiria os livros encontrados no arquivo livraria.xml. Para cada livro seria criado um objeto do tipo livro, onde ficariam armazenados em um list e assim vai….

Espero que tenham gostado.
Postem suas duvidas e/ou contribuem agregando informações.

[]’s

Referencias:

http://kxml.sourceforge.net/kxml2/
http://kxml.sourceforge.net/kxml2/javadoc/
http://www.javamovel.com/2009/06/kxml-framework-java-para-parser-de-xmls.html

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s