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

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 62

  • @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.

    •  9 หลายเดือนก่อน

      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 9 หลายเดือนก่อน

      @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 9 หลายเดือนก่อน

      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 9 หลายเดือนก่อน

      Aqui tem um vídeo mostrando o processo: th-cam.com/video/QHJTdebvNPQ/w-d-xo.html

    •  9 หลายเดือนก่อน

      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.

  • @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!

  • @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!

  • @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 :
      th-cam.com/video/fxJrOwvjitI/w-d-xo.html
      Sucesso!
      Participe:
      𝗖𝗮𝗻𝗮𝗹 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/programacaoplena
      𝗚𝗿𝘂𝗽𝗼 𝗱𝗼 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺:
      t.me/+WwJdqWUazmRmYmMx
      Abraço!

  • @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!

  • @gabrielcalid5760
    @gabrielcalid5760 3 วันที่ผ่านมา

    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 3 วันที่ผ่านมา

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

    •  9 ชั่วโมงที่ผ่านมา

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

    •  9 ชั่วโมงที่ผ่านมา

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

  • @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?

  • @gabrielcalid5760
    @gabrielcalid5760 หลายเดือนก่อน +1

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

    •  22 วันที่ผ่านมา

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

  • @cledsoncedroteixeira3647
    @cledsoncedroteixeira3647 3 ปีที่แล้ว +1

    Obrigado professor!!

    •  3 ปีที่แล้ว

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

  • @robsoncardoso8692
    @robsoncardoso8692 11 หลายเดือนก่อน +1

    Muito bom

    •  11 หลายเดือนก่อน

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

  • @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!

  • @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: th-cam.com/video/NtJXTqxhVpc/w-d-xo.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

  • @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

  • @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!

  • @walney2008
    @walney2008 3 ปีที่แล้ว +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();
    }

    •  3 ปีที่แล้ว

      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 3 ปีที่แล้ว +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

  • @matheussoares1138
    @matheussoares1138 2 ปีที่แล้ว +1

    show

    •  2 ปีที่แล้ว

      Valeu o comentário Matheus!
      Abraço!

  • @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:
      th-cam.com/video/aFz5u1Et_kU/w-d-xo.html
      Abraço!

  • @walney2008
    @walney2008 3 ปีที่แล้ว +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

    •  3 ปีที่แล้ว

      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 3 ปีที่แล้ว +1

      obrigado estou adorando seus videos, obrigado

  • @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!

  • @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?
      th-cam.com/video/OcJlyrImqLw/w-d-xo.html

  • @davidrodrigues6072
    @davidrodrigues6072 10 หลายเดือนก่อน

    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

    •  10 หลายเดือนก่อน

      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 10 หลายเดือนก่อน

      @ 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 10 หลายเดือนก่อน +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