【发布时间】:2014-11-22 14:32:17
【问题描述】:
我有一个包含数据库的大 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 文件上工作?
我不知道!请帮帮我!
【问题讨论】:
-
这就是流的用途