C#和读取大型XML文件

我知道,我知道这已经完成了死亡; 我只是发布一个问题,看看这个解决方案是否仍然相关,因为现在我们有.NET 4和更新版本

此链接解释了一种读取大型XML文件的简单方法,它实现了Linq。 我非常喜欢这个,只是想要一个简单的答案来表明它是否仍然相关,或者是否在更新的.NET代码中有更好的实现。

这个问题的答案在.NET 4中没有改变 – 为了获得最佳性能,你仍然应该使用XmlReader,因为它流式传输文档而不是将整个内容加载到内存中。

您引用的代码使用XmlReader进行实际查询,因此在大型文档上应该相当快。

如果它看起来像这样:

  ... ... ...  

您可以使用XmlReader读取文件,并使用XmlDocument打开每个“项目”,如下所示:

 reader.ReadToDescendant("root"); reader.ReadToDescendant("item"); do { XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadOuterXml()); XmlNode item = doc.DocumentElement; // do your work with `item` } while (reader.ReadToNextSibling("item")); reader.Close(); 

在这种情况下,您对文件大小没有限制。

执行此操作的最佳方法是使用XmlReader.Create逐行读取。

 var reader = XmlReader.Create(filename); reader.WhitespaceHandling = WhitespaceHandling.None; while (reader.Read()) { // your code here. } 

过去几天我一直在努力解决同样的问题。 我只需右键单击 项目属性然后导航到Build选项卡并选择选项Any CPU ,勾选取消选中选项Prefer 32 Bit并保存它以运行您的应用程序,它帮助了我。 我附上了相同的快照。 在此处输入图像描述