如何从CSV到XML c#

时间:2018-06-28 08:57:12

标签: c# xml csv

我需要帮助以将某些特定/选定的数据/列从CSV文件转换为XML文件吗? 我在这里找到了这段代码,但这将所有列都带到XML。

 var lines = File.ReadAllLines(@"testbsp.csv");

        var xml = new XElement("Deltagere",
           lines.Select(line => new XElement("Deltager",
              line.Split(';')
                  .Select((column, index) => new XElement("Column" + index, column)))));

有什么主意吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用Cinchoo ETL-一个开放源代码库,您只需几行代码即可轻松将CSV转换为xml文件。

对于下面的示例CSV文件,下面的示例显示了如何使用ID,仅名称列来生成xml文件

示例CSV:

Id, Name, City
1, Tom, NY
2, Mark, NJ
3, Lou, FL
4, Smith, PA
5, Raj, DC

代码:

string csv = @"Id, Name, City
    1, Tom, NY
    2, Mark, NJ
    3, Lou, FL
    4, Smith, PA
    5, Raj, DC";

StringBuilder sb = new StringBuilder();
using (var p = ChoCSVReader.LoadText(csv).WithFirstLineHeader()
    .WithField("Id")
    .WithField("Name")
    )
{
    using (var w = new ChoXmlWriter(sb)
        .Configure(c => c.RootName = "Emps")
        .Configure(c => c.NodeName = "Emp")
        )
    {
        w.Write(p);
    }
}

Console.WriteLine(sb.ToString());

输出:

<Emps>
  <Emp>
    <Id>1</Id>
    <Name>Tom</Name>
  </Emp>
  <Emp>
    <Id>2</Id>
    <Name>Mark</Name>
  </Emp>
  <Emp>
    <Id>3</Id>
    <Name>Lou</Name>
  </Emp>
  <Emp>
    <Id>4</Id>
    <Name>Smith</Name>
  </Emp>
  <Emp>
    <Id>5</Id>
    <Name>Raj</Name>
  </Emp>
</Emps>

希望有帮助。

答案 1 :(得分:-1)

根据您的代码:

例如,如果您有这样的csv文件:

string csv = @"Id, Name, City
    1, Tom, NY
    2, Mark, NJ
    3, Lou, FL
    4, Smith, PA
    5, Raj, DC";

// Read all lines
var lines[] = File.ReadAllLines(csv);

XElement xml = new XElement("Deltagere",
           // get second column of second line : Tom
           new XElement("NodeName", lines[1].Split(",").GetValue(1)),
           // get third column of fourth line : FL
           new XElement("NodeName2", lines[3].Split(",").GetValue(2))
);

您将获得这样的XML文件:

<Deltagere>
   <NodeName>Tom</NodeName>
   <NodeName2>FL</NodeName2>
</Deltagere>