C#, ler arquivo XML da NFe do SEFAZ. C Sharp Windows Form. Ler itens (produtos) da NFe

Поділитися
Вставка
  • Опубліковано 18 січ 2025

КОМЕНТАРІ • 62

  • @chandelima
    @chandelima 4 роки тому +3

    Muito bom. Estava atrás de algo assim há muito tempo. Muito obrigado!!!

    •  4 роки тому +1

      Por nada chandelima!
      Fico feliz que nosso conteúdo tenha sido útil para você!
      Obrigado pelo apoio!

  • @softfiscalpb674
    @softfiscalpb674 2 роки тому +1

    Parabéns cara, você é nota 10.

    •  2 роки тому

      Muito obrigado pelo seu comentário Soft Fiscal PB!
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

  • @cledsoncedroteixeira3647
    @cledsoncedroteixeira3647 3 роки тому +1

    Obrigado professor!!

    •  3 роки тому

      Disponha Cledson Cedro Teixeira!
      Obrigado pelo comentário!
      Abraço!

  • @robsoncardoso8692
    @robsoncardoso8692 Рік тому +1

    Muito bom

    •  Рік тому

      Muito obrigado pelo seu comentário Robson!
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗶𝗸𝗧𝗼𝗸:
      tiktok.com/@programacaoplena
      Abraço!

  • @walney2008
    @walney2008 4 роки тому +2

    muito bom, estou aprendeno c#, como me ajudou, gostaria tambem aprender ler os xml padrao do MusicXML, usei o PureRef para salvar as telas e poder estudar, muito obrigado

    •  4 роки тому

      Olá Walney moreira klein!
      Todo XML é lido da mesma maneira, o que você precisa é saber como é a estrutura do MusicXML para enteder seus dados então ler as TAGs que você deseja.
      Neste exemplo:
      Music
      A TAG contém o nome da partitura (musica).
      Você precisa conhecer os elementos do XML que você está manipulando.
      Abraço!

    • @walney2008
      @walney2008 4 роки тому +1

      obrigado estou adorando seus videos, obrigado

  • @matheussoares1138
    @matheussoares1138 2 роки тому +1

    show

    •  2 роки тому

      Valeu o comentário Matheus!
      Abraço!

  • @eng.wandeson
    @eng.wandeson Рік тому +1

    Professor, só falta uma aula sobre ler várias notas e interar sobre elas em uma listview. Seria uma aula bacana, usando listas ou matrizes. Ou seja, uma lista de notas dentro de uma list view. Seria bacana!

    •  Рік тому +1

      Obrigado pelo comentário Eng. Wandeson!
      Boa sugestão, anotei aqui, na sequência vou fazer este vídeo!
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

  • @gabrielcalid5760
    @gabrielcalid5760 Місяць тому +1

    Professor da para abrir qualquer arquivo XML com esse codigo? Eles seguem um padrao?

    •  Місяць тому

      Sim, abre qualquer XML!
      Sucesso!
      Abraço!

  • @domingosalves4314
    @domingosalves4314 2 роки тому +2

    Professor, parabens pelo video e pela excelente explicação. Quando fui fazer apenas o total da nota nao foi preenchido, onde será que errei?

    •  2 роки тому

      Obrigado pelo seu comentário Domingos!
      Precisava ver o código.
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

    • @domingosalves4314
      @domingosalves4314 2 роки тому +1

      @ Bom dia, encontrei o que estava fazendo de errado, agora ao invés de trazer para um listview, daria pra trazer para um datagrid?

    • @domingosalves4314
      @domingosalves4314 2 роки тому +1

      Consegui passar para Grid, obrigado.

    •  2 роки тому

      @@domingosalves4314 Parabéns!
      Desistir jamais!

    • @domingosalves4314
      @domingosalves4314 2 роки тому

      @ Para fazer o envio ao Sefaz , tipo NFCe oo NFe vc tem algum material tambem?

  • @kerplunkboydotNET
    @kerplunkboydotNET 10 місяців тому +1

    Amigo, isso se faz com desserialização. Duas ou três linhas de código e lê tudo de uma vez.

    •  10 місяців тому

      Muito obrigado pelo seu comentário!
      Sim, você poderia fazer com desserialização. Se todas as notas fiscais tivessem as mesmas tags você poderia fazer uma classe para servir de apoio para desserialização, porém, isto não ocorre. Poderia fazer a classe para desserialização com base no arquivo XSD e usá-la para desserialização (seria a solução mais técnica).
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗶𝗸𝗧𝗼𝗸:
      tiktok.com/@programacaoplena
      Abraço!

    • @kerplunkboydotNET
      @kerplunkboydotNET 10 місяців тому

      @NFe, é um modelo pronto. Todas elas têm sim os mesmos campos. Mesmo nem todos sendo usados sempre, o que não impede serialização/desserialização. Você encontra os modelos XSD no site da SEFAZ. Esses modelos XSD podem ser convertidos diretamente em classes para VB e C# usando a ferramenta XSD incluída em praticamente todas as versões de Framework. As tags estando ou não no XML não faz diferença, desde que a classe contemple essa tag, o processo ocorre normalmente. O que não pode ocorrer, é uma tag estar no XML e não na classe, nesse caso, o dado não vai constar. Daí que entra o modelo XSD no site da SEFAZ. Neles, todas as tags(propriedades) possíveis estão contempladas.

    • @kerplunkboydotNET
      @kerplunkboydotNET 10 місяців тому

      Se quiser, posso baixar os modelos lá e criar as classes pra você. Coloco em algum lugar pra baixar, mas é bem simples de fazer.

    • @kerplunkboydotNET
      @kerplunkboydotNET 10 місяців тому

      Aqui tem um vídeo mostrando o processo: ua-cam.com/video/QHJTdebvNPQ/v-deo.html

    •  10 місяців тому

      Legal, este vídeo está criando as classes da NFe a partir do XSD, o que vai gerar dezenas de classes devido a complexidade do XML. Depois disso terá que fazer os método de desserialização do XML e somente depois disso é que vc realmente vai ler o conteúdo das classes desserializadas.
      A classe XmlReader tem como propósito evitar a desserialização, acessando diretamente os nós do XML.
      Qual delas escolher? Isto depende do seu projeto, ou seja, do problema a ser resolvido.

  • @R3V3RS1
    @R3V3RS1 Рік тому +1

    Obrigado, me ajudou muito, queria saber se é possível usar openfiledialog para abrir o arquivo ?

    •  Рік тому +2

      Obrigado pelo comentário Jaapeeis!
      É possível abrir com openfiledialog :
      ua-cam.com/video/fxJrOwvjitI/v-deo.html
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

  • @pi24rs
    @pi24rs 2 роки тому +1

    Bom dia Professor gostei muito do seu video gostaria de saber se tem como importar arquivo do tipo .fpl em c# e como eu faria isso

    •  2 роки тому

      Bom dia Luciano!
      A princípio o C# pode abrir qualquer tipo de arquivo, porém você precisa conhecer a estrutura (maneira como os dados são organizados) do arquivo para interpretar os dados contidos nele.
      Veja este vídeo: ua-cam.com/video/NtJXTqxhVpc/v-deo.html
      Cuidado, determinados comandos podem danificar arquivos, então tire uma cópia de segurança antes.
      Abraço!

    • @pi24rs
      @pi24rs 2 роки тому +1

      @ boa tarde muito obrigado professor pela ajuda

  • @claudiogoncalves2019
    @claudiogoncalves2019 2 роки тому +1

    Olá, boa noite! Ótima aula como sempre, gostaria de importar também a chave (ID) da XML como seria? exemplo : - nesta linha capturar o ID.

    •  2 роки тому

      Boa tarde Cláudio!
      Veja este vídeo:
      ua-cam.com/video/aFz5u1Et_kU/v-deo.html
      Abraço!

  • @walney2008
    @walney2008 3 роки тому +1

    ola mestre fiz um teste aqui e achei 2 problemas, no xml da nfe por exemplo o campo com mesmo nome tipo xNome, aparece para emitente,destinatario,transportadora.
    45345345
    sdfsdfds
    99999999000191
    NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL

    Rua Tiradentes
    56
    .
    Maragogipe
    2920601
    Maragogipe
    BA
    12345678
    1058
    BRASIL

    1
    130415376
    email@hotmail.com
    3

    00000
    xxxx
    quando faço assim ele me traz o nome da transportadora, necessito pegar o nome do destinatario,
    if (wmkXml.NodeType == XmlNodeType.Element && wmkXml.Name == "xNome")
    {
    lblNome.Text = wmkXml.ReadElementString();
    }
    e dentro de tem o endereco que esta dentro da tag que fica dentro de dest, como pegar ?

    •  3 роки тому

      Olá Walney moreira klein !
      Você só pode ler a TAG diretamente quando o nome dela for exclusivo no XML, do contrário você primeiro precisa saber o nome do elemento anterior e depois ler a TAG desejada. Lembra que você está percorrendo TAG a TAG, assim se duas ou mais possuirem o mesmo nome você vai obter o conteúdo somente da última. Isto ocorre com a TAG do exemplo.
      Tenta aí, se não conseguir avisa que eu faço um vídeo.
      Abraço!

  • @pablogabriel5484
    @pablogabriel5484 4 роки тому +1

    Ótimo. Amigo se possivel você poderia disponilizar os códigos no GitHub ou no dropBox, ajudaria muito.

    •  4 роки тому

      Olá Pablo Gabriel !
      No futuro vamos ter um site com os códigos fontes, por ora vamos colocar apenas alguns trechos de códigos de alguns vídeos no Dropbox.

    • @alemaodesenvolvedor2296
      @alemaodesenvolvedor2296 3 роки тому +1

      @ E como anda esse projeto do site ai? Continua no papel? Precisamos dos códigos, seja no site ou github só preciso dar um Ctrl + C nele, seu conteúdo me parece ser bom (primeiro vídeo que estou vendo, já bati o olho na thumbnail de outro vídeo seu ali que me interessou - Gerar QR Code já vou nele também) acredito que seu conteúdo terá mais visibilidade se puder ser compartilhado. Obrigado pelo vídeo!

  • @walney2008
    @walney2008 4 роки тому +1

    professor, fiz um teste agora, se fizer assim, acha os 12 nItem corretos,
    if(wmkXml.NodeType==XmlNodeType.Element && wmkXml.Name == "det")
    {
    w_item = wmkXml.GetAttribute("nItem");
    mais dentro dele não consigo pegar nenhum produto, ele nao acha, usei o debug e esta tudo sem dados, o que pode ser ?
    if (wmkXml.NodeType == XmlNodeType.Element && wmkXml.Name == "cProd")
    {
    w_cProd = wmkXml.ReadElementString();
    }
    Não acha os dados de cProd, os que estao por fora, funciona
    if (wmkXml.NodeType == XmlNodeType.Element && wmkXml.Name == "natOp")
    {
    lblnatOp.Text = wmkXml.ReadElementString();
    }

    •  4 роки тому

      Olá Walney moreira klein! Não sei como realmente está escrito teu código. O Primeiro if está abrindo uma chave e não está fechando, por isto não consigo analisar. Se você colocou:
      if (wmkXml.NodeType == XmlNodeType.Element && wmkXml.Name == "cProd")
      if (wmkXml.NodeType == XmlNodeType.Element && wmkXml.Name == "natOp")
      dentro do primeiro if não vai dar certo. Veja no exemplo do vídeo que estes dois ifs não estão aninhados no if do if(wmkXml.NodeType==XmlNodeType.Element && wmkXml.Name == "det").
      Abraço!

    • @walney2008
      @walney2008 4 роки тому +1

      Obrigado professor, o erro era o listview estava fora da ultima chave do vProd, agora foi, copiei a tela para tu ve, ibb.co/gyB5BS0, espero aprender mais c#, obrigado

  • @gabrielcalid5760
    @gabrielcalid5760 29 днів тому

    Professor tenho mas uma duvida, e se um pasta tem mais de uma nota fiscal, como faço para puxar a nota aleatória, sem ser a que esta nesse codigo- var arquivo = @"C:\Dados
    ovatec
    fe(2).xml, e tipo se tiver nfe(3) ou nfe(4) sem direcionar o caminho??

    • @gabrielcalid5760
      @gabrielcalid5760 29 днів тому

      Outra pergunta tambem e se tem video ensinando a dar entrada na nota para vincular os produtos em estoque?

    •  26 днів тому

      Olá Gabriel!
      Veja este vídeo:
      ua-cam.com/video/fxJrOwvjitI/v-deo.html
      Sucesso!
      Abraço!

    •  26 днів тому

      Não tem nenhum vídeo com este tema!
      Sucesso!

  • @jscomputadores1049
    @jscomputadores1049 2 роки тому +1

    Bom dia professor! nao consegui fazer, quando executo, a listview fica doida, aparece itens repetidas vezes e muitas linhas em branco.
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "det")
    {
    ordenItem = meuxml.GetAttribute("nItem");
    cProd = "";//ordem do item
    //var eanItem =""; //codigo de barras do item //cEAN
    xProd = ""; //descricao
    qCom = ""; //quantidade
    vUnCom = "";//custo unitario
    vprod = "";
    //var cst_icms = "";
    //tributos
    }
    else if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "total")
    {
    fimItens = true;
    }
    if (!fimItens)
    {
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "cProd") cProd = meuxml.ReadElementString();
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "xProd") xProd = meuxml.ReadElementString();
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "qCom") qCom = meuxml.ReadElementString();
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "vUnCom") vUnCom = meuxml.ReadElementString();
    if (meuxml.NodeType == XmlNodeType.Element && meuxml.Name == "vprod") vprod = meuxml.ReadElementString();
    {
    lstProdutosNota.Items.Add(new ListViewItem(new[] {ordenItem, cProd, xProd, qCom, vUnCom, vprod}));
    }
    }

    •  2 роки тому +1

      Olá js computadores!
      Vou fazer um vídeo.
      Abraço!

    • @josecandidorosasilveira4296
      @josecandidorosasilveira4296 2 роки тому +1

      @ Abraço prof, muito obrigado pela atenção

    •  2 роки тому

      @@josecandidorosasilveira4296 por nada!
      Chegou a ver o vídeo?
      ua-cam.com/video/OcJlyrImqLw/v-deo.html

  • @LucasGabriel-fd3jh
    @LucasGabriel-fd3jh Рік тому +1

    Eu estive aqui

    •  Рік тому

      Obrigado pela visita e pelo comentário Lucas!
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

  • @josecandidorosasilveira4296
    @josecandidorosasilveira4296 2 роки тому +1

    Boa noite, Como pego o icms/cst

    •  2 роки тому +1

      Olá José Candido!
      Você tem que localizar a tag
      if (meuXml.NodeType == XmlNodeType.Element && meuXml.Name == "imposto")
      do mesmo modo que localizamos a tag .
      Se não conseguir me avisa que vamos fazer um vídeo.
      Abraço!

    • @josecandidorosasilveira4296
      @josecandidorosasilveira4296 2 роки тому

      @ vou testar mais tarde prof

  • @davidrodrigues6072
    @davidrodrigues6072 11 місяців тому

    Por algum motivo quando chega para fazer a leitura da tag nNF ele esta identificando que é um tipo de EndElement, alguem pegou esse problema, mesmo baixando a nota usada no video.
    A parte do meu codigo que faz essa leitura esta dessa forma:
    while (meuXML.Read())
    {
    // CABEÇALHO
    if (meuXML.NodeType == XmlNodeType.Element && meuXML.Name == "natOp")
    {
    txt_natureza.Text = meuXML.ReadElementString();
    }
    if (meuXML.NodeType == XmlNodeType.Element && meuXML.Name == "nNF")
    {
    txt_numero.Text = meuXML.ReadElementString();
    }
    if (meuXML.NodeType == XmlNodeType.Element && meuXML.Name == "serie")
    {
    txt_serie.Text = meuXML.ReadElementString();
    }
    if (meuXML.NodeType == XmlNodeType.Element && meuXML.Name == "dhEmi")
    {
    txt_data.Text = meuXML.ReadElementString();
    }
    }
    Estou usando textbox pois preciso dar a opção para o usuario conseguir digitar informações manualmente

    •  11 місяців тому

      Vc está digitando o nome da tag no textbox? Se tiver terá que digitar o nome da tag considerando maiúsculas e minúsculas ou converter tudo para minúsculas.

    • @davidrodrigues6072
      @davidrodrigues6072 11 місяців тому

      @ Não estou, os demais funcionam certinho somente o numero da nota que nao, na depuração quando chega na tag nNF na comparação se é um Elemant esta retornando false e com isso ele nao entra pois esta retornando que é do tipo EndElement.

    • @davidrodrigues6072
      @davidrodrigues6072 11 місяців тому +1

      Consegui resolver tive que mudar do VS19 para o 22 e resolveu, não sei o porque, com exatamente o mesmo código no 22 foi.
      Muito obrigado, adoro seus tutoriais. @ProgramacaoPlena