【问题标题】:Reading large XML documents in .net在 .net 中读取大型 XML 文档
【发布时间】:2011-12-02 02:03:14
【问题描述】:

我需要使用 .net 文件读取大型 xml,这些文件的大小很容易达到几 GB。

我尝试使用 XDocument,但是当我尝试加载文档时它只是抛出 System.OutOfMemoryException。

读取大尺寸 XML 文件的最佳方式是什么?

【问题讨论】:

  • 如果您在 64 位上运行并希望快速修复 OutOfMemoryException:转到您的项目属性 -> 构建选项卡 -> 平台目标:将任何 CPU 更改为“x64”。

标签: c# .net xml-parsing


【解决方案1】:

你基本上在这里使用“拉”模型 - XmlReader 和朋友。这将允许您流式传输文档,而不是一次性将其全部加载到内存中。

请注意,如果您知道自己处于“足够小”元素的开头,则可以创建一个XElement from an XmlReader,使用 LINQ to XML 的荣耀来处理它,然后移动到下一个元素。

【讨论】:

    【解决方案2】:

    下面的页面读起来很有趣,它提供了一种从 XML 文件中挖掘数据而无需将其加载到内存中的方法。它允许您将 XmlReader 的速度与 Linq 的灵活性结合起来:

    http://msdn.microsoft.com/en-us/library/bb387035.aspx

    还有一篇基于这种技术的非常有趣的文章:

    http://blogs.msdn.com/b/xmlteam/archive/2007/03/24/streaming-with-linq-to-xml-part-2.aspx

    【讨论】:

      【解决方案3】:

      您可以尝试使用XmlTextReader 实例。

      http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多