c# - 使用 C# 控制台应用程序将一个大的 XML 文件一分为二

标签 c# xml file console-application

我需要将 XML 文件(约 400 MB)一分为二,以便遗留应用程序可以处理该文件。目前,当文件超过 300 MB 左右时,它会抛出异常。

由于我无法更改正在进行处理的应用程序,我想我可以先编写一个控制台应用程序将文件一分为二。这样做的最佳方法是什么?它需要自动化,所以我不能使用文本编辑器,而我使用的是 C#。

我想应该考虑的是:

  • 在拆分后为新文件写入标题
  • 找到一个好的拆分位置(不要在“对象”中间)
  • 在第一个文件中正确关闭标签和文件,在第二个文件中正确打开标签

有什么建议吗?

最佳答案

“最佳”方式可能基于 XmlReaderXmlWriter .使用这些“流式”API 可以避免将整个 XML 对象模型加载到内存中(使用 DOM – XmlDocument – 这可能需要比文本数据多得多的内存)。

使用这些 API 比仅仅加载文档更难:您的实现需要跟踪上下文(例如,当前节点和祖先列表),但在这种情况下,这并不复杂(足以将元素打开到打开每个输出文档时的当前状态)。

关于c# - 使用 C# 控制台应用程序将一个大的 XML 文件一分为二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513080/

相关文章:

ios - 如何在 Swift ios 中使用 JSON 输出解析 XML?

c# - FileInfo.MoveTo 不更新 FileInfo.Exists

java - 如何转换java中的默认文件路径?

c# - C#中的make方法,它接受没有类型参数的函数

c# - 如何在asp.net下异步运行持久进程?

c# - 获取特定节点的 xml 属性值

sql - 'local-name()' 需要单例(或空序列)T-SQL Xquery

c# - 与基准测试相比,StackExchange redis 客户端非常慢

java - Android - 将 XML 架构发布到 PHP 服务器 API

file - 什么是 .nsh 文件?找不到它的任何文档