【问题标题】:Building XML from CSV file (ASP.NET)从 CSV 文件构建 XML (ASP.NET)
【发布时间】:2014-05-29 08:18:43
【问题描述】:

我正在尝试从 ASP.NET 中的 CSV 文件构建 XML 字符串。我不需要显示 XML 页面,因为我正在构建 XML 字符串然后发送到 API。 CSV 托管在服务器上。

我需要能够循环遍历 CSV,直到出现空白行(行会随着我使用 CSV 而有所不同),然后停止循环。它会是这样的(<Info> 将是 CSV 中不同行的内容):

<Example>
    <Info>
        <Name>This would be the name</Name>
        <Address>This would be the address</Address>
        <Email>This would be the email</Email>
    </Info>
    <Info>
        <Name>This would be the name</Name>
        <Address>This would be the address</Address>
        <Email>This would be the email</Email>
    </Info>
    <Info>
        <Name>This would be the name</Name>
        <Address>This would be the address</Address>
        <Email>This would be the email</Email>
    </Info>
</Example>

这是一个示例,说明如果 CSV 中有三行,它将如何工作。

我在 Stack Overflow 上看到了这段代码:

var lines = File.ReadAllLines("my_csv.csv");

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

xml.Save("my_csv.csv");

我试过了(替换我的 csv 文件名和路径),但该页面无法加载。

关于我做错了什么有什么想法吗?谢谢。

【问题讨论】:

    标签: c# asp.net xml csv stringbuilder


    【解决方案1】:

    您可以使用简单的 StringBuilder 轻松构建它。一个例子是:

    void Main()
    {
         StringBuilder sb = new StringBuilder();
         sb.Append("<Example>");
    
        foreach(var line in File.ReadAllLines(@"c:\foo\line.csv"))
        {
          var row = line.Split(',');
          if(row.Length>=3)
          {
            sb.Append("<Info>");
            sb.Append("<Name>"+row[0]+"</Name>");
            sb.Append("<Address>"+row[1]+"</Address>");
            sb.Append("<Email>"+row[2]+"</Email>");
            sb.Append("</Info>");
          }
          else//assume blank row. Break out of loop
             break;
       }
       sb.Append("</Example>"); 
    
       //sb.ToString() has the piece of XML you want.
    }
    

    另一种选择是使用XMLSerializer,但以您想要/需要的方式产生完全相同的输出可能并不那么简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多