【问题标题】:Convert each row of CSV file to separate XML files in C#在 C# 中将 CSV 文件的每一行转换为单独的 XML 文件
【发布时间】:2021-10-19 21:32:09
【问题描述】:

我想将 CSV 的每一行转换成单独的 Xml 文件。

CSV

Number;Name;City
1;Alvin;Spain
2;Carol;USA
3;John;Japan

XML(3 个文件)

xml1:

<TopElement>
  <Item>
    <Number>1</Number>
    <Name>Alvin</Name>
    <City>Spain</City>
  </Item>
</TopElement>

xml2:

<TopElement>
  <Item>
    <Number>2</Number>
    <Name>Carol</Name>
    <City>USA</City>
  </Item>
</TopElement>

xml3..等等..

到目前为止,我只找到了这个解决方案,它在同一个文件中输出

var lines = File.ReadAllLines(@"C:\Users\csv.txt");

string[] headers = lines[0].Split(';').Select(x => x.Trim('\"')).ToArray();

var xml = new XElement("TopElement",
           lines.Where((line, index) => index > 0).Select(line => new XElement("Item",
              line.Split(';')
                  .Select((column, index) => new XElement(headers[index], column)))));

xml.Save(@"C:\Users\output.xml");

请任何人帮助我如何通过添加“For”循环来修改上述代码。

【问题讨论】:

  • 这是当你通过复制/粘贴学习编码时的问题。当需要进行更改时,您需要让其他人编写代码,您可以复制/粘贴来进行更改。如果您真正学会自己阅读和理解代码,那就更好了,这样当您需要更改它时,您可以自己进行。
  • 用户 for 循环,计数器以 1 开头并循环通过 lines。然后为每一行创建 xml 并将其保存到文件中。
  • 你不需要把最后一行改成没有固定的文件名吗?

标签: c# xml csv


【解决方案1】:

您需要一个for 语句来循环遍历 CSV 文件行,然后为每一行创建一个 XML 文件。也许是这样的。

for (int i = 0; i <= csv_total_lines; i++)
        {
            string filename = string.Format(@"C:\Users\Public\file{0}.xml", i.ToString());
            XmlTextWriter writer = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
            writer.Formatting = Formatting.Indented;
            writer.WriteStartElement("Top Element");
            writer.WriteStartElement("Item");
            writer.WriteElementString("Number", i.ToString());
            writer.WriteElementString("Name", "Alvin");
            writer.WriteElementString("City", "Spain");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.Flush();
            writer.Close();
        }

您还需要 System.Xml 库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2011-02-15
    • 2016-06-08
    • 1970-01-01
    • 2020-11-03
    • 2011-03-05
    • 2015-10-28
    相关资源
    最近更新 更多