2014-03-30 63 views
0

我創建一個xml文件並在其中寫入一些信息。 當我做這個手術,我請按照下列步驟操作:寫入xml文件c#asp.net,並控制文件大小

  1. 我從數據庫數據和地圖是我的對象列表;
  2. 在foreach迭代語句中寫入xml文件。

但我的數據大小變化。

我的問題是我的xml文件大小不能超過200 MB。如果我的數據超過200 MB。我必須分成兩部分,如果超過400 MB分成三部分。

我可以在填充xml文件之前控制數據大小嗎?

例如,如果我的列表對象的數據大小超過200 MB,我會將我的列表對象分成兩部分。

回答

0

我不明白你寫的XML方法,但你可以嘗試這樣的事情。 主要思想是在列表中的每個記錄的計數長度

[Serializable] 
    public class MyData 
    { 
     public int id { get; set; } 
     public string data { get; set; } 
    } 

    static void Main(string[] args) 
    { 
     string fileName = string.Format("xmlFile_{0}.xml", DateTime.Now.ToString("dd.mm.ss")); 
     int dataLength = 0; 
     int limit = 100500; 

     List<MyData> list = new List<MyData>(); 
     for (int i = 0; i <= 1000; i++) 
     { 
      Random r = new Random(); 
      string preparedData = Convert.ToBase64String( 
       System.Text.Encoding.UTF8.GetBytes(r.Next(int.MaxValue).ToString()) 
       ); 

      MyData mydata = new MyData { id = i, data = preparedData }; 

      StringWriter stringWriter = new StringWriter(); 
      XmlDocument xmlDoc = new XmlDocument(); 
      XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter); 
      XmlSerializer serializer = new XmlSerializer(typeof(MyData)); 
      serializer.Serialize(xmlWriter, mydata); 
      string xmlResult = stringWriter.ToString(); 
      dataLength += xmlResult.Length; 
      if (dataLength <= limit) 
       // insert you write method here 
       File.AppendAllText(fileName, xmlResult); 
      else 
      { 
       // create new file or something else you want 
      } 

      list.Add(mydata); 
     } 

     Console.WriteLine("Finished"); 
     Console.ReadLine(); 
    }