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

时间:2015-10-15 05:59:14

标签: c# xml

我正在努力优化我们的代码,以便我们可以读取,创建发送 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发送给其他服务。

1 个答案:

答案 0 :(得分:1)

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

看看这里: LINQ TO XML