terça-feira, 26 de junho de 2012

Criando arquivos XML com VB6

Bom pessoal esse é o meu primeiro post e para iniciar eu gostaria de mostrar como criar um arquivo XML pois vejo muita gente manipulando ainda com o velho:
Print #1, "<?xml version=""1.0"" encoding=""UTF-8""?>".

Eu sinceramente tenho nojo de trabalhar assim, tem gente que pode até dizer más eu gosto de programar assim é mais fácil. Dai eu lhe digo "Você é chato, e eu não trabalharia com você! ;)".

Más chega de blábláblá e vamos ao que interessa.

Quem trabalha com automação comercial sabe que os arquivos xmls já vem sendo utilizado pelos novos modelos de documentos fiscais ex: NF-e, NFS-e, CT-e etc...

Com isso surge a necessidade de aprender a cria-lo para assim poder atender essas novas exigências.

Como esse pequeno tuto não é teórico é só lançar essas siglas no Google que vocês vão conhecer mais afundo.

Código em vb6

Resultado
        Código para cópia e colar

        'Por Ewerson Felix ;)
        'OBS. Adicione em suas referências O "Microsoft XML, v6.0"
        Dim xml As New DOMDocument
        Dim PrimeiroNo As IXMLDOMElement
        Dim SegundoNo As IXMLDOMElement
        Dim TerceiroNo As IXMLDOMElement
        Dim QuartoNo As IXMLDOMElement
        Dim Cabec, CampoDoNo As IXMLDOMElement
        
        'Cria o elemento raíz
        Set PrimeiroNo = xml.createElement("PrimeiroNo") 'Abre o primeiro nó.
                
        Call PrimeiroNo.setAttribute("xmlns", "NamespaceDoPrimeiroNo") 'Define o atributo do namespace.
         
        Call xml.appendChild(PrimeiroNo) 'Carrega o primeiro nó.
       
        'Define a declaração inicial do xml.
        Set Cabec = xml.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
        xml.insertBefore Cabec, PrimeiroNo
                
        Set SegundoNo = xml.createElement("SegundoNo") 'Abre o segundo nó.
        
        Set CampoDoNo = xml.createElement("Campo1doSegundoNo") 'Cria o campo do segundo nó
        CampoDoNo.Text = "Valor do Campo 1 doSegundoNo": Call SegundoNo.appendChild(CampoDoNo)
        
        Set CampoDoNo = xml.createElement("Campo2doSegundoNo")
        CampoDoNo.Text = "Valor do campo 2 do SegundoNo": Call SegundoNo.appendChild(CampoDoNo)
        
        Set CampoDoNo = xml.createElement("Campo3doSegundoNo")
        CampoDoNo.Text = "Valor do campo 3 do SegundoNo": Call SegundoNo.appendChild(CampoDoNo)
        
        Set TerceiroNo = xml.createElement("TerceiroNo") 'Abre o terceiro nó.
        
        Set CampoDoNo = xml.createElement("Campo1doTerceiroNo") 'Cria o campo do terceiro nó
        CampoDoNo.Text = "Valor do campo 1 Do TerceiroNo": Call TerceiroNo.appendChild(CampoDoNo)
        
        Set CampoDoNo = xml.createElement("Campo2doTerceiroNo")
        CampoDoNo.Text = "Valor do campo 2 Do TerceiroNo": Call TerceiroNo.appendChild(CampoDoNo)
        
        Set QuartoNo = xml.createElement("QuartoNo") 'Abre o quarto nó.
        Set CampoDoNo = xml.createElement("Campo1doQuartoNo") 'Cria o campo do quarto nó
        CampoDoNo.Text = "Valor do campo 1 Do QuartoNo": Call QuartoNo.appendChild(CampoDoNo)
        
        Call TerceiroNo.appendChild(QuartoNo) 'Finaliza o quarto nó.
        Call SegundoNo.appendChild(TerceiroNo) 'Finaliza o terceiro nó.
            
        Call PrimeiroNo.appendChild(SegundoNo) 'Finaliza o segundo no e o documento xml.
        xml.Save ("c:\TESTEXMLVB6.xml") 'Salva no local especificado.

        Bom então é só isso. Simples não? Claro é VB ;)
      Se lhe ajudou me siga no @ewersonfelix

7 comentários:

  1. Olá! Tudo bom? Tenho um sistema em VB e já uso este modelo que descreveu para gerar arquivo XML, só que agora estou precisando colocar uma linha de validação no final, fora do nó raíz e não estou conseguindo. Teria uma idéia? Obrigado e até ...

    ResponderExcluir
    Respostas
    1. O que seria essa validação, uma assinatura, me explica melhor?

      Excluir
    2. Oi! Seria mais ou menos como uma assinatura, na realidade, é uma validação que contem uma chave, chamada de Hash que será validada pelo solicitante; Tem que ficar abaixo do fechamento do arquivo depois de fechar o nó principal e aí que dá o problema. Me deram a dica de usar o comando print, funcionou, só que aí bagunçou o XML e me retornaram que o arquivo está fora do padrão.

      Excluir
    3. Entendi, Olha quando necessitei desses procedimentos precisei criar um erp em vb.net pois lá tem todas as ferramentas necessárias para escrever assinar e enviar o xml para webservices da NFe ou NFC-e ou qualquer outro modelo de negócio que precise utilizar os recursos de criptografia de xml.

      Excluir
  2. Ola..
    Você sabe como enviar um arquivo xml pelo webservice em vb6?
    Preciso gerar uma NFSe por xml e enviar a um webservice.. gerei o xml, mas não sei como enviar via webservice.. e depois tenho ainda a NFe também..
    Obrigado
    Sidnei Nardo

    ResponderExcluir
  3. Caro Ewerson,Bom Dia.

    Estou com dificuldades para realizar o seguinte procedimento: Tenho o XML de uma nota fiscal que eu gostaria de 1)Importar pelo VB e 2)preencher uma serie de textbox com os respectivos campos da NF.
    Carregar a nota eu já consegui, de forma que estou carregando/visualizando o XML em um RichTextBox mas não faço ideia de como navegar pelos nodos em código para preencher as caixas de texto?Pelo tom didatico de seu artigo vejo que vc tem um bom conhecimento sobre a questão de XML no VB. Será que vc poderia me dar uma luz?
    Grato desde já.

    ResponderExcluir
  4. Cara, você é foda. pesquisei a web inteira e não vi nada mais objetivo sobre o assunto. Parabéns!

    ResponderExcluir