0

我需要帮助从 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)))));

任何想法?谢谢!

4

2 回答 2

0

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

对于下面的示例 CSV 文件,下面的示例显示了如何生成仅具有 Id、Name 列的 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>

希望能帮助到你。

于 2018-06-28T16:31:17.357 回答
-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>
于 2018-07-10T14:12:42.807 回答