我正在努力优化我们的代码,以便我们可以读取,创建和发送 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发送给其他服务。
答案 0 :(得分:1)
最好的方法是使用规范化且索引编制的数据库(如果可能的话)。 然后使用LINQ获取数据应该可以解决您的问题。 问题是源而不是你的逻辑,因为XML文件不应该像你的那么大。
看看这里: LINQ TO XML