【问题标题】:OutOfMemoryException when save XmlDocument from XmlReader.ReadInnerXml从 XmlReader.ReadInnerXml 保存 XmlDocument 时出现 OutOfMemoryException
【发布时间】:2020-12-13 17:28:42
【问题描述】:

我正在使用 XmlReader.ReadInnerXml() 加载部分 XML 文件并将其保存为 XmlDocument。当 innerXml 部分超过 2 GB(估计值)时,我遇到了 OutOfMemoryException。处理此错误的最佳方法是什么?有没有更好的方法从 XmlReader 创建一个大的 xml?我可以在不加载到内存的情况下保存内容吗?

using (XmlReader xmlRdr = XmlReader.Create(file))
{
  xmlRdr.MoveToContent();
  while (xmlRdr.Read())
  {
    //when read to XmlNodeType.Element and xmlRdr.Name meets certain criteria
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.PreserveWhitespace = true;
    try
    {
       xmlDoc.LoadXml(xmlRdr.ReadInnerXml());
       //get a few data from within the innerXml and eventually use XmlWritter to save the file                                    
    }
    catch(Exception e)
    {
       string content = $"{e.GetType()} {e.Message} {NewLine} {objId}";
       //send content to log file and email
    }
  }
}

【问题讨论】:

标签: c# out-of-memory xmldocument xmlreader


【解决方案1】:

正如其中一个 cmets 所说,可以尝试使用 StreamReaderStreamWriter

这个tutorial 可能会有所帮助

【讨论】:

  • 这不是答案,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多