IMPORTAR V?RIOS XML

NETVOO 07/07/2016 02:23:01
#464595
Tenho vários xml que foram exportados do emissor gratuito do sefaz, e preciso de importar mas ele vem um produto em cada xml.

Então preciso de carregar todos que estão em uma pasta e carregar em um grid para depois jogar em um banco de dados SQL.

Tenho um código mais não consegui implementar ele.

//listar os arquivos
foreach (FileInfo fileinfo in Arquivos)
{
miLista1.Items.Add(diretorio + fileinfo.Name);
}
//percorrer lista de arquivos
foreach (string str in miLista1.Items)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(str);
XmlNodeList procEventoNFe = xmlDocument.GetElementsByTagName([Ô]procEventoNFe[Ô]);
XmlNodeList evento = ((XmlElement)procEventoNFe[0]).GetElementsByTagName([Ô]evento[Ô]);
XmlNodeList infEvento = ((XmlElement)evento[0]).GetElementsByTagName([Ô]infEvento[Ô]);
//percorrer xml
foreach (XmlElement nodo in infEvento)
{
XmlNodeList CNPJ = nodo.GetElementsByTagName([Ô]CNPJ[Ô]);
XmlNodeList dhEvento = nodo.GetElementsByTagName([Ô]dhEvento[Ô]);
MessageBox.Show(CNPJ[0].InnerText + [Ô]
[Ô] + dhEvento[0].InnerText);
}
}
KERPLUNK 07/07/2016 02:31:19
#464596
Estou achando que você simplesmente não quer entender sobre serialização e uso de OOP. Pela quantidade de posts seus com AS MESMAS dúvidas, me leva a crer que você simplesmente não quer.
NETVOO 07/07/2016 02:46:31
#464598
Citação:

:
Estou achando que você simplesmente não quer entender sobre serialização e uso de OOP. Pela quantidade de posts seus com AS MESMAS dúvidas, me leva a crer que você simplesmente não quer.



Pode ser que não cheguei em um determinado nível de conhecimento.
Mas graças a seus vídeos eu cheguei até aqui, estou importando o produto para o grid, só não consegui pegar vários xml, e ler todos e inserir no grid.
Sei que é foda fazer essas perguntas mas, Cara to com a dúvida e postei o código cru sem as minhas alterações.

Desculpa por não formular a pergunta corretamente ou por estar com dificuldade de entender algumas coisas.
NETVOO 07/07/2016 02:48:26
#464599
Esse é meu código que estou pegando o produto do xml em questão.

List<ProdutosEmissorImport> ProdutosEmissor = new List<ProdutosEmissorImport>();


foreach (XmlElement nodo in infProt)
{
ProdutosEmissorImport PROD = new ProdutosEmissorImport();
{
try
{
PROD._cProd = nodo.GetElementsByTagName([Ô]cProd[Ô])[0].InnerText.Trim();
PROD._xProd = nodo.GetElementsByTagName([Ô]xProd[Ô])[0].InnerText.Trim();
PROD._NCM = nodo.GetElementsByTagName([Ô]NCM[Ô])[0].InnerText.Trim();
PROD._uCom = nodo.GetElementsByTagName([Ô]uCom[Ô])[0].InnerText.Trim();
PROD._vUnCom = nodo.GetElementsByTagName([Ô]vUnCom[Ô])[0].InnerText.Trim();
PROD._CEST = nodo.GetElementsByTagName([Ô]CEST[Ô])[0].InnerText.Trim();
gridProdXML.Rows[i].Cells[0].Style.BackColor = Color.LightSalmon;
}
catch (Exception)
{

}

}
ProdutosEmissor.Add(PROD);
i++;
txtquantprodutos.Text = i.ToString();
// dgvProdutos.Rows.Add(PROD);

}
gridProdXML.DataSource = ProdutosEmissor;
KERPLUNK 07/07/2016 02:57:19
#464600
Citação:

:
:
Estou achando que você simplesmente não quer entender sobre serialização e uso de OOP. Pela quantidade de posts seus com AS MESMAS dúvidas, me leva a crer que você simplesmente não quer.

Pode ser que não cheguei em um determinado nível de conhecimento.
Mas graças a seus vídeos eu cheguei até aqui, estou importando o produto para o grid, só não consegui pegar vários xml, e ler todos e inserir no grid.
Sei que é foda fazer essas perguntas mas, Cara to com a dúvida e postei o código cru sem as minhas alterações.

Desculpa por não formular a pergunta corretamente ou por estar com dificuldade de entender algumas coisas.


Cada XML é uma instância de objeto, você percorre os arquivos, cria a instância desserializando o conteúdo de cada arquivo, adiciona os objetos para um List<T> onde T é a classe do objeto e depois faz o que quiser com essa lista. Um arquivo XML nada mais é que uma representação de dados, cada [Ô]nó[Ô] é uma classe, cada ítem de mesmo tipo dentro do nó é uma Lista(List<T>) de outra classe. Enquanto você enxergar um XML como um texto onde você fica buscando elementos por nome de Tag(GetElementsByTag), você vai ficar só patinando no mesmo lugar. Acho que não é a primeira vez que vou passar isso pra você, mas tenho um vídeo mostrando como fazer serialização e o processo reverso também.
NETVOO 07/07/2016 03:20:04
#464601
Perfeito os vídeos já os assisti e vou assistir de novo, mais mesmo assim não compreendi ainda como fazer o mecanismo para pegar vários xml's.
Usei o GetElementsByTag em uma função que pega exatamente uma única função e ai ela atende bem no caso da transportadora só existe uma.

Porem da forma em que você faz no vídeo todo o documento XML fica a disposição para você usar a informação quando e onde quiser.
A maioria das vezes eu desisti de dar continuidade nas minhas perguntas, até mesmo por vergonha, mas essa eu vou insistir pois tentei aqui o a tarde inteira e não consegui fazer o mesmo que você fez em seu vídeo para vários arquivos. (Desserializando), ou dessa forma ai que postei.
NETVOO 07/07/2016 10:25:27
#464604
Pessoal consegui, não sei se está correto ou se o código está mal estruturado mas funcionou segue o grande código que eu precisava de ajuda.

directoryinfo directory = new directoryinfo(patch);
fileinfo[] files = directory.getfiles(xml);
foreach(Fileinfo fileinfo in files)
{

string caminho = directory + [Ô]\\[Ô] + fileinfo.name;
mylist.add(caminho);
}
Tópico encerrado , respostas não são mais permitidas