Jump to content
Sign in to follow this  
Sollos

Carregando Arquivo XML(xmlDOM)

Recommended Posts

Sollos    0
Sollos

Vou explicar resumidamente, como se criar um acesso rapido a XML por meio de XML DocumentObject Model(DOM).

Primeiro, criei uma tela simples, com os dados básicos de um conta

Imagem Postada

Insira os seguintes componentes:

4 TextBoxes :

-txt_conta

-txt_pwd

-txt_pa

-txt_tipo

1 CmdButton:

-cmd_abrir

1 ListBox

-lst_char

**1 CommonDialog(dialogo) - Para Efetuar a captura do path do arquivo xml

Abaixo segue o código, todo comentado:

Public Sub operaXml(ByVal arqXml As String) 'Metodo que lê e endereça atributos da XMLOn Error Resume NextDim objXml As VariantDim raiz As VariantDim acesso As StringSet objXml = CreateObject("Microsoft.xmlDOM") 'Criando o objeto xmlDOMobjXml.Load (arqXml) 'Carrega o arquivo no path enviado como parametroSet raiz = objXml.documentElement 'Carrega na variavel raiz, o Root do documento xmlIf (raiz.hasChildNodes()) Then 'Se não houver nodos filhos, cancela o carregamento    For Each galho In raiz.childNodes ' Para Cada variavel(ChildNode) em Raiz.ChildNode        If (raiz.getAttribute("pass") <> "") Then 'Se o atributo -pass- for vazio, retorna String -ERRO!-, senão, retorna o valor do Atributo            txt_pwd.Text = raiz.getAttribute("pass")        Else            txt_pwd.Text = "ERRO!"        End If        If (raiz.getAttribute("type") <> "") Then 'Se atributo -type- vazio, retorna -ERRO!-, senão, Seleciona um dos casos possiveis.. 2GM, 3GOD e etc..            acesso = raiz.getAttribute("type")            Select Case (acesso)                Case 1: txt_access.Text = "Normal"                Case 2: txt_access.Text = "Gm"                Case Is >= 3: txt_access.Text = "GOD"            End Select        Else            txt_access.Text = "ERRO!"        End If        If (raiz.getAttribute("premDays") <> "") Then 'Se o atributo -premDays- for vazio, retorna String -ERRO!-, senão, retorna o valor do Atributo            txt_pa.Text = raiz.getAttribute("premDays") & " dias."        Else            txt_pa.Text = "ERRO!"        End If                        For Each rama In galho.childNodes ' Para Cada variavel(ChildNode) em galho.ChildNode                    If (Err.Number <> 0) Then ' Depura Erros                lst_char.AddItem ("ERRO!")            Else                If (rama.getAttribute("name") <> "") Then 'Se não houver erro/atributo nulo, retorna o valor do atributo -name-                    lst_char.AddItem (rama.getAttribute("name"))                End If            End If        Next    NextEnd IfSet objXml = NothingobjXml.CloseEnd SubPrivate Sub cmd_abrir_Click()Dim arquivo As StringDim conta As Stringdialogo.InitDir = "C:" 'Configurando Diretório Default do Dialogodialogo.DialogTitle = "Abrindo Arquivo XML" 'Definindo o titulo da Caixa de Dialogodialogo.Filter = "Arquivos XML(*.xml)|*.xml" 'Define o Filtro da Caixa'Arquivos XML(*.xml) -> É exibido pro usuario / |*.xml -> Define a Extensãodialogo.ShowOpen 'Abre o dialogo'Verificando se o usuario escolheu algum arquivo, caso contrario, msg de erro é exibida e carregamento de arquivo paraIf (dialogo.FileName = "") Then    MsgBox "Nenhum Arquivo foi Selecionado", vbInformation, "Erro"    Exit SubElse    arquivo = dialogo.FileName 'Carrega o path do arquivo para a variavel    conta = dialogo.FileTitle    conta = Replace(conta, ".xml", "") 'Utiliza o nome do arquivo como exibição de Conta        limpaCampos 'Executa Sub de limpeza de campos        txt_conta.Text = conta 'Deposita o nome do arquivo no textBox de ContaEnd If'lst_char.FontBold = TrueoperaXml (arquivo) 'Chama a Sub operaXml passando o path do arquivo por parametroEnd SubPrivate Sub limpaCampos()'Limpando Campostxt_conta.Text = ""txt_access.Text = ""txt_pa.Text = ""txt_pwd.Text = ""lst_char.ClearEnd Sub
Ao final, devera apresentar uma saida semelhante a esta:

Imagem Postada

 

Source(Apenas Fontes - 4kbs)

Share this post


Link to post
Share on other sites
Boleta    1
Boleta

Olá Sollos!

 

Eu não conhecia este método de acesso à XML. Porém, conheço outro que é bem parecido com esse. Ele é um projeto que recebi as fontes de um amigo programador, chamado Neo. Este projeto foi transformado em uma DLL por mim, para melhor uso. Vou fazer um artigo logo logo sobre ela.

 

Sobre o tópico, está excelente, parabéns!

 

Abraços,

//Bol~

Share this post


Link to post
Share on other sites
Zero    0
Zero

Muito bacana Sollos.

Eu usava também a msxml.dll para acessar bancos de dados em XML, mas não fazia dessa maneira. Declarava já os tipos predefinidos.

 

Abraços!

Share this post


Link to post
Share on other sites
Sollos    0
Sollos

É sempre bom trocar informações!

Nesse caso eu fiz a varredura em tudo que é canto do XML, poderia ter simplificado só mesmo utilizando o DOM getElements, mas pra demostrar melhor achei assim mais bacana ^^

[]'s

Share this post


Link to post
Share on other sites
Guest franco0   
Guest franco0

Uma pergunta,e como so super iniciante, voce tb poderia explica o que cada um dos comandor (ou os mais importantes) fazem, e tb fala onde eu boto tudo isso.

SOU UM PIRRALHO SO TENHO 10 ANOS AI MEU DEUS VO MORRE BUAAA (eu quero dizer que pirralhos de des anos nem intendem issu :/)

 

depois eu vo testa no pc da minha mae e ver se consigo tirar minhas duvidas

Share this post


Link to post
Share on other sites
Guest MarioToledo   
Guest MarioToledo

^^, legal velho, programando e aprendendo

 

@franco0

 

se ta zuando né ?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×