GRAVAR XML DA NF-E NO BANCO DE DADOS SQL SERVER 20

ALANCS11 14/03/2013 21:42:48
#420503
Olá Pessoal, estou com dificuldades em gerar um programa em que eu selecione o xml e grave seus dados no banco.
Estou tentando de 2 formas:
1º - Criei uma classe com as propriedades get/set para essas tags.
public int cNF;
public DateTime dEmi;
public int CNPJ;
public string xFant;
public string cProd;
public string cEAN;
public string xProd;
public int NCM;
public int CFOP;
public string uCom;
public int qCom;
public float vUnCom;
public float vProd;
public int orig;
public int CST;
Criei o metodo para Gravar no banco tmb.

public void InserirXml()
{
try
{
CON.ComandoSQL([Ô]INSERT INTO Cadxml(cNF , dEmi, cnpj , xFant, cProd, cEAN , xProd, ncm , cfop , uCom , qCom , vUnCom, vProd, orig , cst)[Ô] +
[Ô] VALUES([ô][Ô] + CNF + [Ô][ô],[ô][Ô] + DEmi + [Ô][ô],[ô][Ô] + CNPJ1 + [Ô][ô],[ô][Ô] + XFant + [Ô][ô],[ô][Ô] + CProd + [Ô][ô],[ô][Ô] + CEAN + [Ô][ô],[ô][Ô] + XProd + [Ô][ô],[ô][Ô] + NCM1 + [Ô][ô]+[ô][Ô] + CFOP1 + [Ô][ô],[ô][Ô] + UCom + [Ô][ô],[ô][Ô] + QCom + [Ô][ô],[ô][Ô] + VUnCom + [Ô][ô],[ô][Ô] + VProd + [Ô][ô],[ô][Ô] + Orig + [Ô][ô],[ô][Ô] + CST1 + [Ô][ô][ô])[Ô]);

}
catch (Exception ex)
{
throw ex;
}

}
A pergunta é como associar a TAG especifica do xml para a minha propriedade, por EX: propriedade CFOP tag <CFOP> 5405 <\CFOP> observando que existirá varios produtos no mesmo xml


2º Consigo puxar os dados para um datagridview, mais apenas das TAG principais no cado do xml da nf-e apenas a tag <PROD> ou outras sem relevancia, mais não sei concatenar 2 ou mais.
Como Salvar esse dataGridView em uma tabela?????


Vlww
LLAIA 15/03/2013 14:07:42
#420534
Primeiro vai ter que aprender a ler os XMLs: http://www.codigofonte.net/dicas/csharp/151_lendo-um-arquigo-xml

Depois vc passa o resultado da leitura para sua query e grava no banco.
ALANCS11 16/03/2013 14:07:50
#420582
LLAIA

Obrigado, mais eu abandonei a ideia do uso das propriedades e fiz algo mais simples, tranformei o xml em datagridview e depois gravei a datagrid na minha tabela.



segue o meu codigo ainda em desenvolvimento

private void bntAbrir_Click(object sender, EventArgs e)
{
DataSet ds;
string fcaminho;

try
{
//SO USO PARA ABRIR O ARQUIVO NO WINDOWS
ofd1.Filter = [Ô]xml|*.xml|all files|*.*[Ô];
DialogResult res = ofd1.ShowDialog();
//SE O ARQUIVO ESTIVER ABERTO
if (res == DialogResult.OK)
{

//FAÇO ISSO
dgv1.DataSource = null;
fcaminho = ofd1.FileName;
ds = new DataSet();
ds.ReadXml(fcaminho);
dgv1.DataSource = ds.Tables[[Ô]prod[Ô]];
dgv2.DataSource = ds.Tables[[Ô]ide[Ô]];
dgv3.DataSource = ds.Tables[[Ô]emit[Ô]];


}
}


catch (Exception ex)
{
MessageBox.Show([Ô]ERRO : [Ô] + ex.Message, [Ô]Aviso[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
}

}

private void bntGravar_Click(object sender, EventArgs e)
{
//ABRO MINHA CLASSE COM A CONECÇÃO NO BANCO
Banco CON = new Banco();
//uso do for para percorrer todos os produtos da datagridview
for (int x = 0; x < dgv1.Rows.Count; x++)
{
CON.ComandoSQL([Ô]INSERT INTO CADXML (cnf, demi, cnpj, xfant,cProd, cEAN, xProd, NCM, CFOP, UCOM, qCom, vUncom, vProd) VALUES[Ô]+
//itens da Tag [Ô]Ide[Ô] pegando as informações solicitadas do dgv2
[Ô]([ô][Ô] + dgv2.Rows[0].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv2.Rows[0].Cells[7].Value + [Ô][ô],[Ô]+
//itens da Tag [Ô]Emit[Ô] pegando as informações solicitadas do dgv3
[Ô][ô][Ô] + dgv3.Rows[0].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv3.Rows[0].Cells[2].Value + [Ô][ô],[Ô] +
//itend da Tag [Ô]prod[Ô] pegando as informações solicitadas do dgv1
[Ô][ô][Ô] + dgv1.Rows[x].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[1].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[2].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[3].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[4].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[5].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[7].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[8].Value + [Ô][ô])[Ô]);
}

}


}
}
Faça seu login para responder