我需要将 XML 文件(约 400 MB)一分为二,以便遗留应用程序可以处理该文件。目前,当文件超过 300 MB 左右时,它会抛出异常。
由于我无法更改正在进行处理的应用程序,我想我可以先编写一个控制台应用程序将文件一分为二。这样做的最佳方法是什么?它需要自动化,所以我不能使用文本编辑器,而我使用的是 C#。
我想应该考虑的是:
- 在拆分后为新文件写入标题
- 找到一个好的拆分位置(不要在“对象”中间)
- 在第一个文件中正确关闭标签和文件,在第二个文件中正确打开标签
有什么建议吗?
最佳答案
“最佳”方式可能基于 XmlReader
和 XmlWriter
.使用这些“流式”API 可以避免将整个 XML 对象模型加载到内存中(使用 DOM – XmlDocument
– 这可能需要比文本数据多得多的内存)。
使用这些 API 比仅仅加载文档更难:您的实现需要跟踪上下文(例如,当前节点和祖先列表),但在这种情况下,这并不复杂(足以将元素打开到打开每个输出文档时的当前状态)。
关于c# - 使用 C# 控制台应用程序将一个大的 XML 文件一分为二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513080/