Usuário com melhor resposta
Ler e Gravar XML no Banco

Pergunta
-
Pessoal .... blz?
Tenho uma grande duvida ... Na verdade sou iniciante em C# ... e estou precisando muito de ajuda.
Tenho o código abaixo onde leio e um arquivo .xml através de um DataSet, porém preciso saber como fazer para ler cada dado dentro do xml (1 por 1 ) e gravar no banco, terei que fazer várias validações e se souberem como valida também eu agradeço.
txtSalvarXML.Text = @"C:\Documents and Settings\Alex\Desktop\Nota Fiscal Eletronica - NFe\nf_54259.xml";DataSet ds = new DataSet("dsNFE");
ds.ReadXml(txtSalvarXML.Text);
Obrigado!
Alex
Respostas
-
Marinho,
Caso os atributos estejam com o mesmo nome da tabela onde deseja salvar as informações, basta passar para um DataAdapter.
Caso naõ esteja igual, te aconselho a passar o XML para uma proc e manipular ele lá dentro.
Segue um exemplo:
=====================================================================================
Create
PROCEDURE [dbo].[P_Teste]
(
@XML VARCHAR(8000) = NULL,
)AS
BEGIN
SET
NOCOUNT ON
-- COLETAR OS ID DE RTVS E ADICIONAR EM TABELA TEMPORRIA.
-- XML Exemplo: '<?xml version=''1.0'' encoding=''ISO-8859-1''?
><ROOT><TABLE><Campo1>1</Campo1><Campo2>Teste</Campo2></TABLE></ROOT>'DECLARE
@TB_XML TABLE (Campo1 INT, Campo2 varchar(50))
DECLARE @IDOC INTEXEC
SP_XML_PREPAREDOCUMENT @IDOC OUTPUT, @XML
INSERT
INTO @TB_XML (Campo1, Campo2)
SELECT Campo1, Campo2
FROM OPENXML(@IDOC, '/ROOT/TABLE')
WITH (Campo1 INT
, Campo2 varchar(50))EXEC
SP_XML_REMOVEDOCUMENT @IDOC
Select * from @TB_XML
=====================================================================================
Espero que isso ajude.
Att,
Felipe Augusto- Marcado como Resposta Levi DomingosModerator domingo, 14 de novembro de 2010 22:31
Todas as Respostas
-
Marinho,
Caso os atributos estejam com o mesmo nome da tabela onde deseja salvar as informações, basta passar para um DataAdapter.
Caso naõ esteja igual, te aconselho a passar o XML para uma proc e manipular ele lá dentro.
Segue um exemplo:
=====================================================================================
Create
PROCEDURE [dbo].[P_Teste]
(
@XML VARCHAR(8000) = NULL,
)AS
BEGIN
SET
NOCOUNT ON
-- COLETAR OS ID DE RTVS E ADICIONAR EM TABELA TEMPORRIA.
-- XML Exemplo: '<?xml version=''1.0'' encoding=''ISO-8859-1''?
><ROOT><TABLE><Campo1>1</Campo1><Campo2>Teste</Campo2></TABLE></ROOT>'DECLARE
@TB_XML TABLE (Campo1 INT, Campo2 varchar(50))
DECLARE @IDOC INTEXEC
SP_XML_PREPAREDOCUMENT @IDOC OUTPUT, @XML
INSERT
INTO @TB_XML (Campo1, Campo2)
SELECT Campo1, Campo2
FROM OPENXML(@IDOC, '/ROOT/TABLE')
WITH (Campo1 INT
, Campo2 varchar(50))EXEC
SP_XML_REMOVEDOCUMENT @IDOC
Select * from @TB_XML
=====================================================================================
Espero que isso ajude.
Att,
Felipe Augusto- Marcado como Resposta Levi DomingosModerator domingo, 14 de novembro de 2010 22:31
-