C#和读取大型XML文件

IEn*_*ble 10 c# xml

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

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

Jam*_*mes 8

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

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


Sta*_* BZ 7

如果它看起来像这样:

<root>
    <item>...</item>
    <item>...</item>
    ...
</root>
Run Code Online (Sandbox Code Playgroud)

你可以阅读文件,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();
Run Code Online (Sandbox Code Playgroud)

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