当我们尝试将XML转换为大约160MB时,MSXML因内存不足而失败。
有趣的是,它只对某个服务器失败,我可以在我的计算机上成功转换同一个文件。
以下是我尝试过的事情:
我试图通过设置PE标志让我的应用程序知道大地址,但觉得这可能不适用于delphi 5。
注意:我知道MSXML使用DOM模型并将所有内容拉入内存,但我们无法从此模型中移除并修复此问题。
任何建议将不胜感激。 德尔菲5 MSMXML 6
答案 0 :(得分:1)
大地址识别可能是您唯一的希望。你无法使用内置的Borland内存管理器来做到这一点。因此,使用FastMM甚至基于平台HeapAlloc
的替代品都可以帮助您克服这个障碍。大地址识别和RTL / VCL可能存在其他问题,但我有信心。我用Delphi 6成功完成了所有这些,所以Delphi 5不应该是不可能的。
从根本上说,您需要切换到SAX解析器。基于DOM的解析器不会与32位地址空间和巨大的XML文件混合使用。