2016-06-28 84 views
0

我想轉換600mb附近的大量xml數據,我不會在它的標題或根節點不會嘗試下面的代碼,但它抱怨它沒有它的根節點。什麼是處理大文件最有效的方式。如果你的XML是有名稱爲「ReportDetails」轉換大的xml到csv

示例XML文件根節點此代碼工作應該像

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

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

你的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); 
} 
+0

什麼是確切的錯誤消息? – Veverke

+0

它只是返回一個空文件沒有這樣的錯誤,當我沒有該文件是600MB的大小與有效的架構 – rogue39nin

+0

您嘗試創建一個示例xml文件,如根節點A有2個孩子B和C,其中C有一個孩子......添加一些垃圾文本節點,看看你還沒有得到什麼? – Veverke

回答

0

此代碼工作正常ReportDetails「,您在代碼中指定了

xRoot.ElementName = "ReportDetails"; 
+0

嗨對不起,我沒有即時嘗試創建一個通用的例程將xml轉換爲csv這是一個樣本,我發現試圖根據我的需要進行修改 – rogue39nin