Desenvolvendo VBA e XML, utilizando a API SAX (Simple API for XML)

A biblioteca MSXML da Microsoft pode ser referenciada para se trabalhar com XML inclusive com todas as aplicações do MS Office (além de VB6, Dot Net, ASP, etc …). Existem duas API (Application Programming Interface) principais para se trabalhar com XML: (a) DOM (Document Object Model) e (b) SAX (Simple API for XML).

Neste artigo demostro através de um simples exemplo de VBA com MS Excel, a importação de um arquivo XML que contém dados de livros utilizando da API SAX. Porém, como já mencionado acima, esta API pode ser utilizada por outras linguagens da Microsoft, inclusive outros aplicativos do MS Office (na verdade todos que utilizam VBA).

Para iniciar, abra o MS Excel e acessando a sua IDE (Integrated Development Environment), por exemplo, pressionando as teclas [ALT] + [F11] do seu computador.

Vá no menu [Ferramentas] depois no sub-menu [Referencias] e ache o item Microsoft XML, V 6.0  conforme demonstrado abaixo:

Imagem

Isto feito, você já está pronto para começar a programar utilizando-se da API SAX. Para tanto, será preciso criar um módulo-de-classe que implementa a Interface IVBSAXContentHandler  sendo que esta classe será responsável por lidar com os eventos SAX. Veja imagem abaixo de como fica esta classe:

Imagem

A API SAX (no escopo deste artigo) possui o papel do Reader e do Handler. O primeiro é o “motor” que carrega e lê o arquivo XML. Já o segundo define o que deverá ser feito conforme o leitor (Reader) vai acessando cada uma das tags (elementos xml), por exemplo: <book>, <author>, etc… Então, o handler possui alguns “eventos” interessantes tais como: startElement, endElement e characters.

No exemplo que pode ser baixado (veja rodapé do artigo), cada vez que se inicia uma tag da qual desejo fazer algo, defino uma variável booleana que representa uma das tags que tenho interesse no arquivo xml com o valor Verdadeiro e conforme vou acessando os caracteres de dentro da tag (<tag>caracteres</tag>) verifico se a variável booleana está setada para Verdadeiro. Ao terminar a tag então seto a variável booleana para Falso e transfiro o dado para a planilha do Excel na celula correta.

Start Element: (Ocorre toda vez que o reader encontra um novo elemento)

Imagem

Character: (Ocorre toda vez que o reader está processando o texto de dentro do elemento encontrado)

Imagem

End Element: (Ocorre quando o reader terminou de ler o elemento.)

Imagem

Faça DOWNLOAD do código deste exemplo e veja de maneira mais completa tudo funcionando.

Não se esqueça de habilitar as macros quando abrir o arquivo:

Imagem

Leia também:

– Desenvolvendo VBA e XML utilizando a API DOM (Document Object Model)

– Desenvolvendo VBA e XML, fazendo uma requisição web (Web Request)

– Outros posts de VBA e VB6

– Programação Orientada a Objetos com VBA e VB6

– Padrão Anbima de Posição de Fundos. Eu importei.

Anúncios
Esta entrada foi publicada em Microsoft, Projetos, Visual Basic 6.0 e VBA com as etiquetas , , , , , , . ligação permanente.

3 respostas a Desenvolvendo VBA e XML, utilizando a API SAX (Simple API for XML)

  1. Pingback: Padrão Anbima de Posição de Fundos. Eu importei. | Pedro Abs

  2. Pingback: Desenvolvendo VBA e XML, utilizando a API DOM (Document Object Model) | Pedro Abs

  3. Pingback: Desenvolvendo VBA e XML, fazendo uma requisição web (Web Request) | Pedro Abs

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

w

Connecting to %s