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 文件?
我不知道!请帮帮我!
Xdocument.Load
不是最好的方法,原因是Xdocument.Load将整个文件加载到内存中。根据 MSDN memory usage will be proportional to the size of the file.
如果您只是打算搜索 XML 文档,则可以改用XMLReader
(查看此处)。在 MSDN 上阅读此文档。