none
Ler e Gravar XML no Banco RRS feed

  • 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

    sexta-feira, 21 de agosto de 2009 13:52

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 INT

     

    EXEC

     

    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

    terça-feira, 25 de agosto de 2009 13:51

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 INT

     

    EXEC

     

    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

    terça-feira, 25 de agosto de 2009 13:51
  • Não entendi como utilizar o DataAdapter, poderia explicar melhor?
    quinta-feira, 7 de outubro de 2010 16:18