从CSV文件(ASP.NET)构建XML

本文关键字:构建 XML NET ASP CSV 文件 | 更新日期: 2023-09-27 17:58:25

我正在尝试从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文件名和路径),但该页面无法加载。

你知道我做错了什么吗?非常感谢。

从CSV文件(ASP.NET)构建XML

您可以使用简单的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,但以您想要/需要的完全相同的方式生成输出可能并不那么简单。