【问题标题】:Convert datatable to xml with 15k records in asp.net c#在asp.net c#中将数据表转换为具有15k条记录的xml
【发布时间】:2020-03-17 12:01:26
【问题描述】:

我在数据表中有 15k 条记录,我无法将数据表转换为 xml,在 asp.net c# 中出现内存不足异常。

XmlDocument xmlDoc = new XmlDocument();
using (MemoryStream memoryStream = new MemoryStream()) {
    using (TextWriter streamWriter = new StreamWriter(memoryStream)) {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(DataTable));
        xmlSerializer.Serialize(streamWriter, dt);

        if (memoryStream.Position > 0) {
            memoryStream.Position = 0;
        }

        xmlDoc.Load(memoryStream);
    }
}

【问题讨论】:

  • 请提供您的问题的示例代码。
  • XmlDocument xmlDoc = new XmlDocument();使用 (MemoryStream memoryStream = new MemoryStream()) { using (TextWriter streamWriter = new StreamWriter(memoryStream)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(DataTable)); xmlSerializer.Serialize(streamWriter, dt); if (memoryStream.Position > 0) { memoryStream.Position = 0; } xmlDoc.Load(memoryStream); } }
  • 我缺少什么代码,它在 xmlSerializer.Serialize(streamWriter, dt);行。
  • 有多少条记录被序列化?看起来您正试图将大量数据序列化到 MemoryStream 中,结果内存不足。

标签: c# asp.net


【解决方案1】:

如果您的 .net 版本允许,您可以尝试使用此方法 DataTable.WriteXml

DataSet ds = new DataSet();
DataTable customerTable = GetCustomers();
DataTable orderTable = GetOrders();

ds.Tables.Add(customerTable);
ds.Tables.Add(orderTable);
ds.Relations.Add("CustomerOrder",
    new DataColumn[] { customerTable.Columns[0] },
    new DataColumn[] { orderTable.Columns[1] }, true);

System.IO.StringWriter writer = new System.IO.StringWriter();
customerTable.WriteXml(writer, XmlWriteMode.WriteSchema, false);

【讨论】:

  • 如何将 writer 加载到 xml 文档中。请提供样本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2019-09-13
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多