none
Gera XML a partir de DataTable usando um XSLT RRS feed

  • Pergunta

  • Tenho o seguinte DataTable:

    Gostaria de criar o seguinte XML:

    <Principal>
    	<InfEmp>
    		<Id>1</Id>
    		<Matricula>000777</Matricula>
    		<Nome>Mozart</Nome>
    	</InfEmp>
    	<InfDep>
    		<Nome_Dep>Dep1</Nome_Dep>
    		<Tipo_dep>Eposa</Tipo_dep>
    		<Nome_Dep>Dep2</Nome_Dep>
    		<Tipo_dep>Filho</Tipo_dep>		
    	</InfDep>
    </Principal>

    Gostaria de usar um XLST para criar um template, usei este:

    Mas retorna assim direto dos campos do DataTable em não customizado.


    Como criar um template e mesclar os dados do DataTable usando um template?

       


    • Editado jothaz quarta-feira, 17 de fevereiro de 2016 17:28
    quarta-feira, 17 de fevereiro de 2016 17:22

Todas as Respostas

  • Segue o exemplo:

    protected void btnExportar_Click(object sender, EventArgs e)
    {
          var nomeArquivo = "nomeArquivo.xml";
    
          // Gera o arquivo XML
          var dstExportacao = new SistemaBLL().ExportarDados();
          var xmlDoc = new StreamWriter(Server.MapPath("~/Temp/" + nomeArquivo), false);
    
          dstExportacao.WriteXml(xmlDoc);
    
          xmlDoc.Close();
    
          // Download
          Response.Clear();
          Response.ClearHeaders();
          Response.ClearContent();
          Response.ContentType = "application/octet-stream";
    
          byte[] file = File.ReadAllBytes(Server.MapPath("~/Temp/" + nomeArquivo));
    
          Response.AddHeader("Content-Disposition", "attachment; filename=\"" + nomeArquivo + " \"");
          Response.AddHeader("Content-Length", file.Length.ToString());
    
          Response.BinaryWrite(file);
    
          Response.Flush();
          Response.Close();
          Response.End();
    }


    Carlos Eduardo Ferreira

    quarta-feira, 17 de fevereiro de 2016 17:36
  • Agradeço a resposta, ma o que eu preciso é gerar o XML usando um template e não somente gerar o XML da tabela.

    Além de usar os campos do DataTable como Tag preciso usar alguma Tag´s presonalizadas.


    Ninguém falou que seria fácil!

    quarta-feira, 17 de fevereiro de 2016 18:06
  • E se você trabalhar com DataSet tipado?

    No exemplo que passei é um tipado. E em uma outra interface eu importo esse arquivo XML para um dataset do mesmo tipo e trato as dados.


    Carlos Eduardo Ferreira

    quarta-feira, 17 de fevereiro de 2016 18:09
  • Mais uma vez obrigado por ajudar.

    Acho que eu não estou sabendo explicar, mas vou tentar.

    Se gero o XML a partir de minha fonte de dados fica assim:

    <NewDataSet>
    	<Table>
    		<Id>1</Id>
    		<Matricula>000777</Matricula>
    		<Nome>Mozart</Nome>
    		<Nome_Dep>Dep1</Nome_Dep>
    		<Tipo_dep>Eposa</Tipo_dep>
    	</Table>
    </NewDataSet>

    Só que preciso que fique assim:

    <?xml version=\"1.0\" encoding=\"utf-16\"?>
    <Principal>
    	<InfEmp>
    		<Id>1</Id>
    		<Matricula>000777</Matricula>
    		<Nome>Mozart</Nome>
    	</InfEmp>
    	<InfDep>
    		<Nome_Dep>Dep1</Nome_Dep>
    		<Tipo_dep>Eposa</Tipo_dep>
    		<Nome_Dep>Dep2</Nome_Dep>
    		<Tipo_dep>Filho</Tipo_dep>		
    	</InfDep>
    </Principal>

    Além das tags com os nomes dos campos que estão na fonte de dados (id, nome e ect) preciso de outras tags: Principal. InfEmp e InfDep.



    Ninguém falou que seria fácil!


    • Editado jothaz quarta-feira, 17 de fevereiro de 2016 18:49
    quarta-feira, 17 de fevereiro de 2016 18:48