编写xml文件c#asp.net,并控制文件大小

编写xml文件c#asp.net,并控制文件大小,c#,asp.net,xml,C#,Asp.net,Xml,我创建了一个xml文件,并在其中写入了一些信息。 执行此操作时,我将遵循以下步骤: 我从数据库中获取数据,并将其映射到我的对象列表中 在foreach迭代语句中编写xml文件 但我的数据大小是可变的 我的问题是我的xml文件大小不能超过200 mb。如果我的数据超过200 mb。我必须分为两部分,如果超过400 mb,则分为三部分 我可以在填充xml文件之前控制数据大小吗 例如,如果我的列表对象数据大小超过200 mb,我将把列表对象分成两部分。我不理解您编写的xml方法,但您可以尝试类似的方法

我创建了一个xml文件,并在其中写入了一些信息。 执行此操作时,我将遵循以下步骤:

  • 我从数据库中获取数据,并将其映射到我的对象列表中
  • 在foreach迭代语句中编写xml文件
  • 但我的数据大小是可变的

    我的问题是我的xml文件大小不能超过200 mb。如果我的数据超过200 mb。我必须分为两部分,如果超过400 mb,则分为三部分

    我可以在填充xml文件之前控制数据大小吗


    例如,如果我的列表对象数据大小超过200 mb,我将把列表对象分成两部分。

    我不理解您编写的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();
        }
    
    [可序列化]
    公共类MyData
    {
    公共int id{get;set;}
    公共字符串数据{get;set;}
    }
    静态void Main(字符串[]参数)
    {
    string fileName=string.Format(“xmlFile_{0}.xml”,DateTime.Now.ToString(“dd.mm.ss”);
    int dataLength=0;
    整数极限=100500;
    列表=新列表();
    对于(int i=0;i