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

preview_player
Показать описание
Como ler as TAGs do XML da nota fiscal eletrônica do SEFAZ e colocar os produtos em uma grade com C Sharp.
C# - Visual Studio 2019

link do vídeo - ler dados do emitente e destinatário do XML da NFe SEFAZ.
Рекомендации по теме
Комментарии
Автор

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

chandelima
Автор

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!

eng.wandeson
Автор

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

walney
Автор

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

kerplunkboydotNET
Автор

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

domingosalves
Автор

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

RVRS
Автор

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.
<emit>
<CNPJ>45345345</CNPJ>
<xNome>sdfsdfds</xNome>

<dest>

<xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome>
<enderDest>
<xLgr>Rua Tiradentes</xLgr>
<nro>56</nro>
<xCpl>.</xCpl>

<cMun>2920601</cMun>
<xMun>Maragogipe</xMun>
<UF>BA</UF>
<CEP>12345678</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
</enderDest>
<indIEDest>1</indIEDest>
<IE>130415376</IE>
</dest>

<transp>
<modFrete>3</modFrete>
<transporta>

<xNome>xxxx</xNome>
</transp>
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 <dest> tem o endereco que esta dentro da tag <enderDest> que fica dentro de dest, como pegar ?

walney
Автор

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

pablogabriel
Автор

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

claudiogoncalves
Автор

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

pirs
Автор

professor, fiz um teste agora, se fizer assim, acha os 12 nItem corretos,
&& 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();
}

walney
Автор

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

davidrodrigues
Автор

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}));

}




}

jscomputadores