Desserializando um arquivo XML de Nota fiscal eletrônica em classes

Поделиться
HTML-код
  • Опубликовано: 16 янв 2025

Комментарии • 97

  • @secondmindsolutions
    @secondmindsolutions 6 лет назад

    Não sou de ficar comentando em videos do youtube, mas este seu foi um Fenômeno.Parabéns

  • @RicardoBlueMind
    @RicardoBlueMind 2 года назад

    Muito obrigado! ainda mas já colocando o código, foi muita bondade!! parabéns!!

  • @SandraReginaSilva-w5n
    @SandraReginaSilva-w5n Год назад

    Rapaz, você me salvou. Parabéns pelo vídeo e muito obrigada.

  • @PauloCesarValadares
    @PauloCesarValadares 3 года назад +1

    Ganhou um inscrito, fiz o mesmo processo só que usando o CTe e funcionou direitinho.

  • @kerplunkboydotNET
    @kerplunkboydotNET  9 лет назад +3

    Esse é o básico para se fazer esse processo. Ainda tem muita coisa que pode(e deve) ser aprimorada, como o uso de blocos "using" para todos os objetos, blocos try...catch também. Se quiser ficar por dentro de como se faz isso, se inscreva no canal e assista toda a série de vídeos sobre OOP. Nela explico detalhe por detalhe isso tudo. A OOP não é só para o código fica "bonitinho", tudo, absolutamente tudo em se tratando de .NET é orientado à objeto, então, entendendo OOP muito bem, praticamente nada vai ser mistério pra você no .NET!

    • @tielesilva9280
      @tielesilva9280 8 лет назад

      kerplunk meu Amigo, Seus vídeos são tops, rápidos e objetivos, vc poderia fazer um video ensinando a criptografar a conectionstring?
      Seria perfeito!
      Valeu irmão!

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад +1

      Tiele SILVA Hmmm, essa é uma boa idéia! Tenho um aqui pra fazer sobre todas as variáveis de configuração, serializadas em um XML, só não tinha pensado em criptografar, essa é uma boa idéia. Obngado pela audiência e pelo elogio!

    • @tielesilva9280
      @tielesilva9280 8 лет назад

      To aguardando!!!

  • @marcelocorrea9830
    @marcelocorrea9830 2 года назад

    Foi de enorme ajuda. Muito obrigado e parabéns!

  • @darcioas
    @darcioas Год назад

    Faz um vídeo mostrando como utilizar a classe HttpCliente + certificado digital para envio e recebimento de resposta dos arquivos XML das notas fiscais. Já procurei em tudo que é canal e não encontrei.

  • @ErikSena
    @ErikSena 2 года назад

    Obrigado, ão lembrava desse recurso

  • @NetvooBrG
    @NetvooBrG 9 лет назад

    Karaca, com poucas linhas e de fácil entendimento você faz isso rsrsrs.
    Por favor faz um ao contrário como o sugerido no vídeo, quando você puder.
    E se no futuro, quando possível tiver mais vídeos sobre nfe seria muito bom, em um ocasião você comentou comigo que para transmitir ou consultar uma nfe, poderia se fazer com WSDL, e com sua experiência acho que seria bem pratico montar um projetinho simples e funcional.
    Kerplunk, valeu por compartilhar seu conhecimento. Parabéns.

    • @kerplunkboydotNET
      @kerplunkboydotNET  9 лет назад

      +Grupo NetVoo Sem problemas! Farei um sim. Mas melhor ainda, seria acompanhar os vídeos do canal, porque na série de OOP, vou ensinar a fazer métodos de extensão que fazem serialização e desserialização de qualquer objeto tanto para uma string quanto para arquivo. Mas posso fazer um curtinho desses mostrando como fazer isso.
      Obrigado por acompanhar o canal!

    • @NetvooBrG
      @NetvooBrG 9 лет назад

      Estou acompanhando sim, vi todos já, e implementei várias coisas que você usou em exemplos meus que estou fazendo para aprender C#.

  • @davidsonmariz
    @davidsonmariz 3 года назад

    Muito bom, muito obrigado parabens

  • @joaocarlosdossantos6199
    @joaocarlosdossantos6199 6 лет назад

    Muito objetivo seu vídeo. Tem como dar uma dica para ler os produtos do xml e também realizar a geração?

  • @walney2008
    @walney2008 4 года назад

    e agora como usa este objeto para por exemplo mostrar os produtos em um datagridview ou listview por exemplo ?

  • @13mvincius
    @13mvincius 6 лет назад +1

    Parabéns pelo vídeo!
    Se possível, me explique como faço para pegar todos os produtos contidos na nota fiscal. Desde já, obrigado pela atenção.

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад

      Não é o primeiro à fazer esta pergunta. Sugiro que dê uma olhada na série sobre orientação à objeto aqui no canal mesmo.

  • @danielguedes7398
    @danielguedes7398 6 лет назад +1

    Muito bom, maninho. Valeu o Help

  • @alexandresoarescampos7500
    @alexandresoarescampos7500 10 месяцев назад

    Estou com um problema para Desserializar um arquivo da bolsa de valores B3 do brasil. Você poderia me ajudar?

  • @claudiobarbosadossantos153
    @claudiobarbosadossantos153 7 лет назад

    muito bom parabéns

  • @Leandrowisky
    @Leandrowisky 6 лет назад +1

    salvou!!!!

  • @billbarsch
    @billbarsch 5 лет назад

    tem algum video mostrando como assinar o xml?

  • @rodrigojacinto8058
    @rodrigojacinto8058 9 месяцев назад

    Ola, tem interesse em fazer uma trabalho de freelancer em um projeto parecido com esse? se sim entre contato, abraços..

  • @joseantunes3766
    @joseantunes3766 7 лет назад +3

    Alguém conseguiu solucionar esse erro - erro no documento XML (2, 2).To usando o VS 2012

  • @mant_jd5
    @mant_jd5 3 года назад

    Ola como posso converter uma tabela SQL em arquivo XML apartir do c#

    • @kerplunkboydotNET
      @kerplunkboydotNET  3 года назад

      Sugiro ver os outros videos do canal, tenho explicações completas de como fazer esse tipo de processo. Não é o tipo de cosia que posso responder em poucas linhas.

  • @gilbertosoares5957
    @gilbertosoares5957 7 лет назад

    Primeiramente parabéns pelo seu canal, suas video aulas são fora série e muito bem "Explicadinho". Agora vamos a minha dúvida... Eu criei a classe com base no xml de um cliente para preencher um dataGrid com todas as notas que selecionei no openFileDialog e consegui extrair os dados da classe, porém não funciona com notas de outros clientes que acredito ser pela versão da NFE. Como eu faço para a classe ser padrão para qualquer nfe?

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 лет назад

      Obrigado! O exemplo que usei de NFe, é mais ilustrativo do que prático. O correto mesmo é utilizar os modelos XSD disponibilizados no site da SEFAZ. Eles geram classes muito mais complexas e completas. Você já não é o primeiro que tem dificuldades com isso, por isso vou deixar aqui o link contendo todas as classes geradas à partir dos modelos XSD: drive.google.com/file/d/0BxGOuG70MDrONTFqekNFUWJlSUk/view?usp=sharing
      E não se esqueça de deixar seu joinha e se inscrever no canal!

    • @joseantunes3766
      @joseantunes3766 7 лет назад

      Pra usar essa classe é da mesma maneira que da outra; conforme código postado acima : XmlSerializer ser = new XmlSerializer(typeof(NFe)); TextReader textReader = (TextReader)new StreamReader("D:\\downloads\
      fe exemplo.xml"); XmlTextReader reader = new XmlTextReader(textReader); reader.Read(); NFe nota = (NFe)ser.Deserialize(reader);

  • @washingtonpaiva6947
    @washingtonpaiva6947 8 лет назад

    Muito bom o vídeo! Mais um inscrito no canal!
    Meu problema é dúvida agora é como carregar o certificado digital corretamente com a biblioteca X509 do C#
    Você tem alguma dica em relação a isso?

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад +1

      É bem simples de fazer a leitura, usando o método "Import":
      X509Certificate cert = new X509Certificate();
      cert.Import("C:\\pasta\\subpasta\\certificado.cer");
      Se é que é isso que você queria... Se não por favor explique um pouco mais o que precisa pra que eu possa entender...
      Obrigado pela audiência!

    • @washingtonpaiva6947
      @washingtonpaiva6947 8 лет назад

      O que eu queria é o seguinte, quais os passos que eu devo fazer para que quando eu enviar o xml da nfe ou nfce para a receita ela seja validada, o que eu vou extrair do certificado para enviar os dados de forma correta?

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      Ah sim, você quer assinar o XML digitalmente. Não tenho um vídeo sobre isso ainda, mas quero fazer o quanto antes pois me pedem bastante. É um procedimento relativamente complicado e faço diretamente no XML e não em um processo de serialização/desserialização. É mais ou menos assim:
      - Gero o XML serializando normal, como nesse vídeo: ruclips.net/video/xlDFj6INZVc/видео.html
      - Em seguida, faço a leitura do arquivo como objeto XML, assim:
      XmlDocument docRequest = new XmlDocument();
      docRequest.PreserveWhitespace = false;
      docRequest.LoadXml(@"C:\pasta\subpasta\XML SEM ASSINATURA.xml");
      - Isso feito, então eu busco o nó à ser assinado, chamado infNFe, assim:
      XmlNodeList ListInfNFe = docRequest.GetElementsByTagName("infNFe";);
      - Então entra a parte de buscar o certificado, assim:
      X509Certificate2 xCert;
      xCert = new X509Certificate2(@"C:\pasta\subpasta\Certificado.pfx", "senha_do_certificado");
      - Agora vem a parte mais chata, percorrer os nós:
      foreach (XmlElement infNFe in ListInfNFe)
      {
      string id = infNFe.Attributes.GetNamedItem("Id").InnerText;
      signedXml = new SignedXml(infNFe);
      signedXml.SigningKey = xCert.PrivateKey;
      Reference reference = new Reference("#" + id);
      reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
      reference.AddTransform(new XmlDsigC14NTransform());
      signedXml.AddReference(reference);
      KeyInfo keyInfo = new KeyInfo();
      keyInfo.AddClause(new KeyInfoX509Data(xCert));
      signedXml.KeyInfo = keyInfo;
      signedXml.ComputeSignature();
      XmlElement xmlSignature = docRequest.CreateElement("Signature", "www.w3.org/2000/09/xmldsig#");
      XmlElement xmlSignedInfo = signedXml.SignedInfo.GetXml();
      XmlElement xmlKeyInfo = signedXml.KeyInfo.GetXml();
      XmlElement xmlSignatureValue = docRequest.CreateElement("SignatureValue", xmlSignature.NamespaceURI);
      string signBase64 = Convert.ToBase64String(signedXml.Signature.SignatureValue);
      XmlText text = docRequest.CreateTextNode(signBase64);
      xmlSignatureValue.AppendChild(text);
      xmlSignature.AppendChild(docRequest.ImportNode(xmlSignedInfo, true));
      xmlSignature.AppendChild(xmlSignatureValue);
      xmlSignature.AppendChild(docRequest.ImportNode(xmlKeyInfo, true));
      var evento = docRequest.GetElementsByTagName("SignedInfo");
      evento[0].AppendChild(xmlSignature);
      }
      Esse é mais ou menos o caminho das pedras... Espero ter ajudado.

    • @washingtonpaiva6947
      @washingtonpaiva6947 8 лет назад

      Obrigado pela ajuda! Darei uma olhada! Muito bom o conteúdo!

  • @thiagopratesoficial
    @thiagopratesoficial 8 лет назад

    Boa tarde, tentei aqui executar o mesmo código e quando eu chego no break point, nota fica com o valor null, não aparece nenhuma informação das classes.
    Obs.: Estou utilizando um xml de uma NFSe.
    Poderia me dar uma luz por gentileza?

  • @Whoxy5
    @Whoxy5 8 лет назад

    Gostaria de saber se existe como gerar um arquivo em pdf desse arquivo xml. Obrigado. Muito bom o vídeo.

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      Resposta curta: Sim, é totalmente possível. PDF é um formato que possibilita praticamente qualquer conteúdo, incluindo PDF. O caso é que não vejo qualquer necessidade ou vantagem nisso. Veja bem, ao contrário do que se possa pensar, os arquivos XML das notas, são tão somente uma representação de dados, geralmente vindos de um banco de dados, eles são somente temporários e na verdade não sequer necessários de serem guardados após o envio. E mesmo para o envio o XML é desnecessário, pois o envio não depende do arquivo físico. E muito obrigado pela audiência! Não se esqueça de deixar seu joinha!

    • @Whoxy5
      @Whoxy5 8 лет назад

      kerplunkboy Quero desenvolver um aplicativo simples em c# para leitura de arquivo xml que também seja possível gerar arquivos em pdf. Isso me ajudaria muito. Obrigado.

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      Você quer colocar em formato PDF um conteúdo XML, é isso?

    • @Whoxy5
      @Whoxy5 8 лет назад

      kerplunkboy Sim.

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      Ok, e qual sua dificuldade?

  • @DogdyZero
    @DogdyZero 8 лет назад

    Amigo. Eu uso o vb.net. porém na hora de pegar o arquivo xml e dar um colar special igual vc faz, o vb.net não tras isso. Portanto não consigo colar a Classe. Você tem um exemplo da classe do c# para eu tentar fazer igual ao c# igual você mostrou no video

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      É possível que você esteja usando uma versão desatualizada do Visual Studio. A melhor coisa a ser feita é baixar uma versão atual como a versão 2015 Community é grátis e você pode fazer com ela exatamente como mostro no vídeo. Simplesmente passar a classe pronta, não seria de bom proveito para você. É melhor mesmo fazer todo o processo, isso faz com que você entenda melhor o que está ocorrendo. E muito obrigado pela audiência e não esqueça de deixar seu joinha e se inscrever no canal!

  • @guiizaogaming
    @guiizaogaming 9 лет назад

    kerplunk,
    Lindo isso ai.
    Detalhe, uma nfe pode ter diversas tags, que podem ou não fazer parte do xml que se seta como referencia.
    tem como criar essa classe via código, sem ir la em editar e colar ?
    Pois cada nfe pode não ter a tag que vc queira carregar ou o contrario.

    • @kerplunkboydotNET
      @kerplunkboydotNET  9 лет назад

      Sim, as classes são totalmente customizaveis. Essas, são baseadas no xml específico, só isso. Obrigado pela audiência! Não se esqueça de deixar seu joinha e se inscrever no canal!

    • @fabiofrigo5775
      @fabiofrigo5775 4 года назад

      @@kerplunkboydotNET Parabéns Pelo Vídeo, me ajudou muito. Gostaria que me ajudasse a abrir qualquer xml de nfe e não só o que foi usado para fazer a classe. Desde já agradeço

    • @kerplunkboydotNET
      @kerplunkboydotNET  4 года назад +1

      @@fabiofrigo5775 Olá! Para isso, você precisa gerar suas classes baseadas nos modelos XSD fornecidos pela SEFAZ. Esses sim conterão todas as propriedades da NFe.

  • @ThyagoVitorSampaio
    @ThyagoVitorSampaio 5 лет назад

    o que voce fez com o xml pode ser feito com json?

    • @kerplunkboydotNET
      @kerplunkboydotNET  5 лет назад

      Sim, sem o menor problema. Obviamente não EXATAMENTE da mesma maneira, você vai precisar de um serializador diferente. Nesse link, existe um artigo com vários approaches diferentes para essa tarefa: www.c-sharpcorner.com/article/json-serialization-and-deserialization-in-c-sharp/

  • @sergiojampapb
    @sergiojampapb 5 лет назад

    como acesso os dados dos tributos ICMS e IPI ?

    • @kerplunkboydotNET
      @kerplunkboydotNET  4 года назад

      Sugiro que dê uma olhada nos vídeos sobre OOP. Sua dificuldade é bem clássica de quem ainda não domina o assunto.

  • @marciojsm
    @marciojsm 6 лет назад

    Preciso de ajuda com a sintaxe para pegar esses dados e colocar num textbox por exemplo.

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад +1

      Uma vez serializado, todas as propriedades do objeto podem ser usadas da forma que quiser. No seu caso simplesmente: txtSuaTextBox.Text = nota.infNFe.dest.xNome

    • @marciojsm
      @marciojsm 6 лет назад

      Como ler por exemplo o "tempoDeVerde tempo" do "estagio" com id=2 ???

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад

      O processo é exatamente o mesmo que você vê no vídeo. Experimente segui-lo e com certeza vai entender.

    • @marciojsm
      @marciojsm 6 лет назад

      Sim, o processo do vídeo funciona certinho (parabéns alias!!), mas não consigo saber a sintaxe para pegar a informação no objeto criado.
      Seria tipo isso:
      textbox1.Text = controlador.estagios.estagio[id=2].tempoDeVerde tempo;
      Mas qual a sintaxe correta? Esse que postei não funciona.

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад +1

      Estou supondo que "estagios" seja um array. Neste caso, basta usar um cast para List no array e usar uma expressão lambda para pegar o item desejado. Mais ou menos assim:
      controlador con = new controlador();
      controladorEstagio esta = con.estagios.FirstOrDefault(x => x.id == 2);
      this.Text = esta.tempoDeVerdeMaximo.ToString();
      Isso são conceitos básicos de OOP, se você está com dificuldade nisso, sugiro que assista as séries sobre OOP e Reflection. Elas lhe darão essa base. Um conselho: Não tente "atalhos" como esse. Algo do tipo "resolver pontualmente", isso só vai prejudicar seu aprendizado, pois lida com conceitos bem mais complexos e que deveriam estar sólidos para você.

  • @lucassantanna_designer
    @lucassantanna_designer 7 лет назад

    Olá tudo certo? bom vídeo, poderia me passar o link da nota fiscal xml de exemplo pois não encontrei no site...preciso para fazer uns teste...Obrigado

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 лет назад +1

      +Lucas Santanna Olá muito obrigado! Você pode pode fazer o mesmo processo com qualquer XML de NFe. Na verdade, qualquer XML vai ter o mesmo resultado. E não esqueça de deixar seu joinha!

    • @lucassantanna_designer
      @lucassantanna_designer 7 лет назад

      Obrigado Só mais uma dúvida tem algum site que fala sobre as abreviações das classes, por exemplo para min poder fazer a nota fiscal os campos são todos abreviados, para min poder saber tipo oque é " cCT, CFOP, nC, dhEmi etc... sabe algum artigo que fala oque é cada um? para mim poder completar toda a nota fiscal.... Obrigado pela ajuda da dei joinha! :)

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 лет назад +1

      +Lucas Santanna Você pode verificar a documentação completa no portal fiscal. Aliás para gerar auas classes de forma realmente completa, utilize os modelos XSD disponibilizados lá.

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 лет назад +1

      +Lucas Santanna Você pode usar qualquer XML. Não precisa ser da NFe.

    • @EduardoPereira-zi7ug
      @EduardoPereira-zi7ug 4 года назад

      @@kerplunkboydotNET Muito bom o vídeo. Parabéns. Me inscrevi para ver mais. Dúvida 1: Como uso o arquivo XSD para criar uma classe? O Colar especial parece não funcionar. Dúvida 2: Depois que eu conseguir criar o XML tenho como faço para mandar para a receita e como faço para pegar o retorno. Tem algum vídeo ou curso que mostre todo o processo de criação de NFe?

  • @vimacovim7089
    @vimacovim7089 4 года назад

    Aqui deu certo assim
    XmlSerializer ser = new XmlSerializer(typeof(NFe.TNfeProc));
    TextReader textReader = (TextReader)new StreamReader("C:\\teste.xml");
    XmlTextReader reader = new XmlTextReader(textReader);
    reader.Read();
    NFe.TNfeProc nota = (NFe.TNfeProc)ser.Deserialize(reader);

  • @RaptorsGamers
    @RaptorsGamers 6 лет назад

    So Funciona para C# porque em .net nao cola especial

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад

      Como assim "em .net"?

    • @RaptorsGamers
      @RaptorsGamers 6 лет назад

      Visual Studio 2015 .net ele fica em branco nao cola especial

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 лет назад

      Use uma versão mais recente. Visual Studio 2017 community é totalmente gratuito.

  • @RafaLuvian
    @RafaLuvian 8 лет назад

    Kerplunkboy , cara eu to usando o visual studio 2015 e estou com dois problemas.
    1. fazendo a criação da classe NFE como vc mostra quando chega na hora de mencionar ela no xmlserializer ela não aparece
    2. a classe xmltextreader não aparece para eu instanciar
    o que estou fazendo de errado?

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 лет назад

      Quanto ao XmlTextReader, lembre-se que é case-sensitive, ou seja, maiúsculas e minúsculas fazem diferença
      Quanto à sua classe não ser mostrada, verifique se o nome e namespace da classe criada
      Obrigado pela audiência

    • @RafaLuvian
      @RafaLuvian 8 лет назад

      O namespace aparece o mesmo do nome do projeto e se tento alterar na hora que referêncio ele aparece um erro falando que estou usando um namespace como variável.
      Só consegui ler a nfe usando leitura campo a campo.
      Sou novo em c# talvez esteja fazendo alguma coisa errada

    • @RafaLuvian
      @RafaLuvian 8 лет назад

      Quanto ao xnltextreader eu serei o projeto é quando reiniciei ele reconheceu normalmente, antes não conseguia nem listar a referência

  • @marquimti
    @marquimti 6 лет назад +2

    Boa noite, muito bom os videos sem duvida alguma, parabéns.
    fiz um exemplo exatamente igual ao do vídeo mas me retornou a seguinte aviso:
    "InvalidOperationException: não era esperado."
    alguém pode me ajudar por favor?
    agradeço desde já!

    • @Jan.Junior
      @Jan.Junior 6 лет назад

      Consegui resolver esse erro?

    • @JoaoVictorPereiraSantos
      @JoaoVictorPereiraSantos 6 лет назад

      Também estou com esse erro

    • @kevimbertolrodrigues9159
      @kevimbertolrodrigues9159 6 лет назад

      estou com o mesmo problema Erro no documento XML (1, 40).'
      InvalidOperationException: não era esperado.
      Conseguiu resolver ?

    • @andrelau944
      @andrelau944 2 года назад

      Tive o mesmo problema e ainda nao achei a soluçao

  • @rogerioevangelistadasilva5840
    @rogerioevangelistadasilva5840 5 лет назад

    Isso ta facil, queria ver voce pegar o valor dos impostos dos produtos do xml ... ai sim o bicho pega até hoje nao achei em lugar nenhum... isso ai todo mundo faz

    • @kerplunkboydotNET
      @kerplunkboydotNET  5 лет назад

      Tudo que constar no XML vai estar nas classes, incluindo os impostos.