C#和读取大型XML文件

时间:2012-10-17 10:00:33

标签: c# xml

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

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

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:7)

如果是这样的话:

<root>
    <item>...</item>
    <item>...</item>
    ...
</root>

您可以使用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();

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

过去几天我一直在努力解决同样的问题。我只需右键单击 项目属性,然后导航到构建标签并选择选项任意CPU ,勾选取消选中选项首选32位并在运行您的应用之前将其保存,这对我有帮助。我附上了相同的快照。 enter image description here