Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TH3W4RL0CK

Problema no load de arquivos de um diretório em C#

Recommended Posts

Estou com um problema que não consegui identificar o que ocorre, quando utilizo o código abaixo especificando o arquivo a ser lido "ARQUIVO.xml" o programa executa a função normalmente ou seja lê todas as tags repetidas de um mesmo arquivo.

 

       private void MetodoDetalhes()
       {

               var nfeNamespace = "http://www.portalfiscal.inf.br/nfe";
               var namespaceManager = new XmlNamespaceManager(new NameTable());
               namespaceManager.AddNamespace("x", nfeNamespace);

               var xml = XDocument.Load("ARQUIVO.xml");//ESPECIFICO O ARQUIVO A SER LIDO.
               var xmlProdutos = xml.XPathSelectElements("//x:prod", namespaceManager);

               var agrupado---ome = xmlProdutos.GroupBy(p => p.Element(XName.Get("xProd", nfeNamespace)).Value);

               var produtos =
                   agrupado---ome.Select(g =>
                   new Produto
                   {
                       Nome = g.Key,
                       ValorTotal = g.Sum(e => Convert.ToDecimal(e.Element(XName.Get("vProd", nfeNamespace)).Value))


                   });

 

Quando mudo meu código da forma abaixo para ele pegar todos os arquivos do diretório "txtEntradaDetalhes.Text", ele não executa a função de ler as tags repetidas, lendo somente a primeira.

 

private void MetodoDetalhes()
       {
           foreach (string fileSystem in System.IO.Directory.GetFiles(txtEntradaDetalhes.Text, "*.xml", System.IO.SearchOption.AllDirectories))//PARTE ALTERADA
           {

               System.IO.FileInfo fi = new System.IO.FileInfo(fileSystem);//PARTE ALTERADA

               var nfeNamespace = "http://www.portalfiscal.inf.br/nfe";
               var namespaceManager = new XmlNamespaceManager(new NameTable());
               namespaceManager.AddNamespace("x", nfeNamespace);

               var xml = XDocument.Load(fi.FullName);//PARTE ALTERADA
               var xmlProdutos = xml.XPathSelectElements("//x:prod", namespaceManager);

               var agrupado---ome = xmlProdutos.GroupBy(p => p.Element(XName.Get("xProd", nfeNamespace)).Value);

               var produtos =
                   agrupado---ome.Select(g =>
                   new Produto
                   {
                       Nome = g.Key,
                       ValorTotal = g.Sum(e => Convert.ToDecimal(e.Element(XName.Get("vProd", nfeNamespace)).Value))


                   });

 

 

O que será que esta errado em meu código que não consigo executar corretamente a função pegando os arquivos do caminho especificado ?

 

Agradeço desde já.

 

Th3W4rl0ck

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já debugou para ver se o fi.FullName esta vindo exatament ARQUIVO.xml ?

 

Abraços...

 

 

Sim, mais quando eu uso o fi.FullName no segundo script é pq eu quero pegar todos os arquivos de um diretório.

Quando eu especifico o arquivo "ARQUIVO.xml" no primeiro script, funciona beleza.

 

O problema é que eu quero pegar todos os arquivos de um diretório e executar o procedimento, algo que nao acontece.

 

Acredito que deve estar acontecendo algum conflito entre "xDocument" e "fi.FullName", porque ele nao encontra os arquivos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Separa as funções, crie métodos separados ao invés de usá-los dentro das chaves, faça todas as funções em métodos e depois junte tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.