当前位置: 首页 > 编程语言 > C#

当CSV包含字符和数值数据时将CSV转换为XML分享

时间:2023-04-10 16:29:09 C#

CSV包含字符和数值数据时将CSV转换为XML从这个线程中,我得到了如何解析CSV以创建XML基本信息的说明。不幸的是,文本字段(全部在引号中)有时包含逗号,所以line.split(',')给我太多的列。我不知道如何解析CSV,因此line.split(',')区分文本字段中的逗号和逗号分隔的字段。关于如何做到这一点的任何想法?谢谢!获取此代码:http://geekswithblogs.net/mwatson/archive/2004/09/04/10658.aspx并将line.Split(",")替换为SplitCSV(line),例如:varlines=File。ReadAllLines(@"C:text.csv");varxml=newXElement("TopElement",lines.Select(line=>newXElement("Item",SplitCSV(line).Select((column,index)=>newXElement("Column"+index,column)))));xml.Save(@"C:xmlout.xml");请注意,上面链接中的代码相当陈旧,可能可以使用Linq进行清理,但它应该可以解决问题。试试文件助手。FileHelpers是一个免费且易于使用的.NET库,用于从文件、字符串或流中的固定长度或分隔记录导入/导出数据。如何使用管道字符“|”?这通常发生在CSV文件中,更好的方法是分离管道。如果您的CSV文件太复杂而无法编写您自己的解析器,请使用另一个解析器。OfficeACEOLEDB提供程序可能已经在您的系统上可用,但对于您的目的来说可能有点过分了。我没有使用任何轻量级的替代品,所以我不能说它们是否合适。如果您不想使用正则表达式,这里有一个小技巧。您可以使用逗号和引号来分隔“,”,而不是用逗号分隔。假设逗号前后没有空格:line.Split("","")您需要删除第一个字段之前和最后一个字段之后的引号。虽然我几乎总是反对正则表达式,但这里有一个使用它的解决方案。假设您有这样的数据:"firstname","lastname","phonenumber""john,jane","doe","555-5555"然后,以下代码:stringcsv=GetCSV();//将加载您的CSV,或上面的数据foreach(在Regex.Matches(line,"".+?"")中匹配m)Console.WriteLine(m.Value);}将输出:---开始记录---“名字”“姓氏”“电话号码”---开始记录---“john,jane”“doe”“555-5555”但是,如果你有一个2GB的csv文件,我不推荐使用Regex方法。因此,您可以将其用作形成XML记录的基线。以上就是C#学习教程:当CSV包含字符和数字数据时,将CSV转XML,内容全分享。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络合集,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处: