将大型xml转换为csv

时间:2016-06-28 14:07:44

标签: c# xml csv

我想在600mb附近转换大量的xml数据,我不会没有它的头或根节点我尝试了下面的代码,但它抱怨它不是没有它的根节点。处理大文件的最有效方法是什么。

using (FileStream fs = new FileStream(@"C:\Projects\csvExport\csvExport\csvExport\bin\VLFLBNM7.xml", FileMode.Open))
{

            XmlRootAttribute xRoot = new XmlRootAttribute();
            xRoot.ElementName = "ReportDetails";
            // xRoot.Namespace = "http://www.cpandl.com";
            xRoot.IsNullable = true;

            XmlSerializer serializer = new XmlSerializer(typeof(Sequence[]),xRoot);
            var data = (Sequence[])serializer.Deserialize(fs);
            List<string> list = new List<string>();
            foreach (var item in data)
            {
                List<string> ss = new List<string>();
                foreach (var point in item.SourcePath) ss.Add(point.X + "," + point.Y);
                list.Add(string.Join(",", ss));
            }
            File.WriteAllLines(@"C:\Projects\csvExport\csvExport\csvExport\bin\csvFile.csv", list);
}

1 个答案:

答案 0 :(得分:0)

如果您的XML具有名称为&#34; ReportDetails&#34;

的根节点,则此代码可以正常工作

此代码的示例XML文件应该像

<?xml version="1.0"?>
<ReportDetails>
<Sequence>
   <SourcePath>
      <X>samply x</X>
      <Y>xample y</Y>

   </SourcePath>
</Sequence>
</ReportDetails>

您的XML缺失&#34; ReportDetails&#34;你在代码中指定的

 xRoot.ElementName = "ReportDetails";