如何在读取、创建和发送非常大的xml文件时避免内存异常

本文关键字:文件 xml 异常 内存 非常 读取 创建 | 更新日期: 2023-09-27 18:17:57

我正在努力优化我们的代码,以便我们可以读取,创建发送 xml文件,这可以是非常大的大小(2GB)。

对于读和创建,我们使用XmlReader类。

我们实际上从其他服务获得一个XML字符串。如果我们将XML字符串存储在字符串变量中,它将占用相同数量的内存。撇开这一点不谈,请建议处理XML字符串的最佳方法,以使内存超出界限的异常不会发生。

我不能在这里显示代码 由于公司政策但这应该无关紧要,因为代码已经工作了,但在大xml字符串的情况下,它给出:

内存异常

…如前所述.

解释:

我们从一个服务中得到2GB Xml。

我们使用流处理它。

因为我们需要使用xmlreader读取xml,所以我们以字符串的形式传递xml以创建一个大小几乎相同的新xml (2GB)

byte[] msg = Buffer.ExtractMessage(messageStart, messageEnd);  
string msg1 = Encoding.UTF8.GetString(msg);
CreateNewXMLFileFromTheCurrentXmlString(msg1);

如何在读取、创建和发送非常大的xml文件时避免内存异常

如果可能的话,最好的方法是使用规范化和索引良好的数据库。然后使用LINQ获取数据应该可以解决您的问题。问题是源而不是你的逻辑,因为XML文件不应该像你的那么大。

看这里:LINQ TO XML