在.net中读取大型XML文档

时间:2011-10-06 08:38:28

标签: c# .net xml-parsing

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

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

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

3 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:5)

以下页面进行了有趣的阅读,提供了一种从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

答案 2 :(得分:0)

您可以尝试使用XmlTextReader实例。

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