从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文件名和路径),但该页面无法加载。
你知道我做错了什么吗?非常感谢。
您可以使用简单的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,但以您想要/需要的完全相同的方式生成输出可能并不那么简单。