LINQ to XML 是否在查询期间加载整个 xml 文档

本文关键字:加载 xml 文档 XML to 是否 查询 LINQ | 更新日期: 2023-09-27 18:31:43

我有一个包含数据库的大xml文件!
400mb是一个大小。
它是使用LINQ本身创建的,它是在10 minutes年完成的! 很棒的结果!
但是为了使用LINQ从该xml文件中读取粒子信息,它需要 20 分钟或更长时间!
试想一下,阅读少量信息比写入大量信息需要更多的时间!在读取过程中,它需要调用一个不IDisposable的函数XDocument.Load(@"C:'400mb.xml")
因此,当它将加载整个xml文档并且当它获得我的小信息时,内存不会清除!
我的目标是阅读"

     XDocument XD1 = XDocument.Load(@"C:'400mb.xml");
     string s1 = XD1.Root.Attribute("AnyAttribute").Value;

如您所见,我需要获取根元素的属性。
这意味着xml文件中我需要的数据可能在第一行,查询必须非常快地完成!
但取而代之的是,它会加载整个文档,然后返回该信息!
所以问题是如何使用任何东西从大型xml文件中读取少量信息?
System.Threading.Tasks命名空间有用吗?还是创建异步操作?
或者甚至任何类型的技术都可以像binary文件一样处理该 xml 文件?
我不知道!请帮帮我!

LINQ to XML 是否在查询期间加载整个 xml 文档

Xdocument.Load不是

最好的方法,原因是Xdocument.Load将整个文件加载到内存中。根据 MSDN memory usage will be proportional to the size of the file.如果您只是打算搜索 XML 文档,则可以改用XMLReader(查看此处)。在 MSDN 上阅读此文档。