使用内存从磁盘读取XML,每次一条记录
本文关键字:一条 记录 XML 读取 内存 磁盘 | 更新日期: 2023-09-27 18:04:55
我正在尝试对磁盘上的XML文件进行排序块的合并排序。它们不可能都在内存中。我的XML文件由记录组成。
假设有n个XML文件。如果我有足够的内存,我会将每个文件的全部内容读入相应的Queue中,每个文件一个队列,比较每个队列中每个项目的时间戳,并将时间戳最小的项目输出到另一个文件(合并文件)。这样,我把所有的小文件合并成一个大文件,所有的条目都按时间排序。
问题是我没有足够的内存来读取所有XML与。readtoend稍后传递给。parse方法的XDocument。
是否有一种干净的方法来读取足够的记录,以保持每个队列为下一个比较它们的XElement属性"TimeStamp"的传递填充,并记住它从磁盘读取了哪个XElement ?
谢谢。
您正在寻找的是XmlReader
。
表示提供快速、非缓存、仅向前的读取器访问XML数据
所以它已经过时了,但是这正是SAX解决的问题。它是XML的简单API,基于回调。您启动一个读取操作,并为每条记录回调代码。这可能是一个选项,因为这不需要程序加载整个XML文件(也称为XMLDocument)。谷歌SAX。
如果你喜欢linq to xml api,这个codeplex项目可能会满足你的需求。