none
Importados dados de XMLs de NF-e em c# RRS feed

  • Pergunta

  • Olá pessoal, eu estou um pouco de dificuldade em importar os dados de mais de 2 mil arquivos de NF-e da empresa, gostaria de saber se existe um processo para acessar elas e salvar os dados no sql server com C#.

    Modelo dos Itens que preciso que seja salvo no banco

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Linq;
    using System.Web;
    
    namespace mia.Models
    {
        public class Nfe_Omie
        {
            [Key]
            public int Omie_Id { get; set; }
    
          
            public string xml { get; set; }
    
            public string Num_Serie { get; set; }
    
            public string Chave_Acesso { get; set; }
    
            public string Emitente_Nome { get; set; }
    
            public string Emitente_CNPJ { get; set; }
    
            public string Destinario_Nome { get; set; }
    
            public string Destinario_CNPJ { get; set; }
    
            public string Produto_Desc { get; set; }
    
            public string Produto_Quant { get; set; }
    
            public string Produto_Valor { get; set; }
    
            public string Produto_DadosAdicionais { get; set; }
    
            [DataType(DataType.ImageUrl)]
            public byte[] Danfe { get; set; }
    
    
            [NotMapped]
            [Display(Name = "Dafe")]
            public HttpPostedFileBase DafeUpload { get; set; }
        }
    }

    Como o processo vai ser automático, estou uma task e void para ficar salvando, porem não sei como funcionar os nos da NF-e

    segue o void de checagem:

    public static string CheckNFebyOmie()
            {
    
                DirectoryInfo Dir = new DirectoryInfo(@"C:\XML");
                // Busca automaticamente todos os arquivos em todos os subdiretórios
                FileInfo[] Files = Dir.GetFiles("*", SearchOption.AllDirectories);
    
                foreach (FileInfo File in Files)
                {
                    string FileName = File.FullName.Replace(Dir.FullName + File.Name,"");
    
                    using (XmlReader reader = XmlReader.Create(FileName))
                    {
    
                        while (reader.Read())
                        {
                            if (reader.IsStartElement())
                            {
    
                                //return only when you have START tag
    
                                switch (reader.Name.ToString())
                                {
                                    case "nfeProc":
                                    //case "NFe":
                                    //case "infNFe":
                                    //case "ide":
                                    //case "cUF":
                                    return reader.ReadString();
    
                                }
    
                            }
    
                        }
                        
                    }
    
    
                }
                return "";
            }

    Desde ja agradeço pela ajuda

    sexta-feira, 1 de novembro de 2019 14:45

Todas as Respostas

  • Mudei a forma de leitura

                DirectoryInfo Dir = new DirectoryInfo(@"C:\XML");
                // Busca automaticamente todos os arquivos em todos os subdiretórios
                FileInfo[] Files = Dir.GetFiles("*", SearchOption.AllDirectories);
    
                foreach (FileInfo File in Files)
                {
                   
    
                    var cliente_xml = File.Name;
    
                    XDocument doc = XDocument.Parse(cliente_xml);
    
                    string novo_tipo = "";
    
                    foreach (var element in doc.Root.Elements("emit").Descendants())
                    {
                        if (element.Value.Equals("Cliente"))
                        {
                           
                            var emt_cnpj = doc.Element("CNPJ").Value;
                            var emt_nome = doc.Element("xNome").Value;
    
                         
    
                            Nfe_Omie nfe_Omie = new Nfe_Omie();
                            nfe_Omie.Emitente_CNPJ = emt_cnpj;
                            nfe_Omie.Emitente_Nome = emt_nome;
                            
    
                            db.Nfe_Omie.Add(nfe_Omie);
                            db.SaveChanges();
                        }
                    }
                }
              

    sexta-feira, 1 de novembro de 2019 17:16