Hoje vou mostrar como gerar um arquivo xml a partir de um csv no C#.

Por muitas vezes necessitamos gerar vários padrões de saida em nossos aplicativos, hoje mostro como implementar de forma simples um conversor de csv para xml.

Nessa primeira parte será demonstrada como usar uma classe para realizar essa extensão de funcionalidades.

[sections] [section title=”Gerar xml a partir de csv”]

public class ConversorCsvXml
{
public static XDocument Converte_CSV_Para_XML(string csvString, string[] separadorCampo)
{
//separa as linhas do arquivo CSV
var sep = new[] {"\r\n"};
string[] linhas = csvString.Split(sep, StringSplitOptions.RemoveEmptyEntries);

//Cria uma declaração XML
var xsurvey = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
//Cria o elemento raiz do XML
var xroot = new XElement("root");
//percorre cada linha do arquivo CSV
for (int i = 0; i < linhas.Length; i++)
{
//Cria cada linha
if (i > 0)
{
xroot.Add(gera_Linha_XML(linhas[i], linhas[0], separadorCampo));
}
}
xsurvey.Add(xroot);
return xsurvey;
}

private static XElement gera_Linha_XML(string linha, string primeiraLinha, string[] separadorCampo)
{
//separa os campos da linha do arquivo CSV
string[] temp = linha.Split(separadorCampo, StringSplitOptions.None);
//separa o nome dos campos da primeira linha do arquivo CSV
string[] nomes = primeiraLinha.Split(separadorCampo, StringSplitOptions.None);
//cria um novo elemento row
var xmlLinha = new XElement("row");
for (int i = 0; i < temp.Length; i++)
{
//Cria o elemento var e os atributos com o nome do campo e valor
var xvar = new XElement("var",
new XAttribute("name", nomes[i]),
new XAttribute("value", temp[i]));
xmlLinha.Add(xvar);
}
return xmlLinha;
}
}

Para utiliza-lo execute em qualquer método:

XDocument docXML = ConversorCsvXml.Converte_CSV_Para_XML(StringComDadosCSV, new[] {";"});

Não esquecer de utilizar o using System.Xml.Linq;

[/section] [/sections]
Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[C#] Gerar arquivo XML a partir de um CSV

Deixe uma resposta

%d blogueiros gostam disto: