我正在尝试对磁盘上已排序的XML文件块进行合并排序。没有机会他们都适合记忆。我的XML文件由记录组成。
说我有n个XML文件。如果我有足够的内存,我会将每个文件的全部内容读入一个对应的队列,每个文件一个队列,比较每个队列中每个项目的时间戳,并将具有最小时间戳的那个输出到另一个文件(合并文件) 。这样,我将所有小文件合并为一个大文件,所有条目都按时间排序。
问题是我没有足够的内存来读取所有带有.ReadToEnd的XML,以便稍后传递给XDocument的.Parse方法。
是否有一种干净的方法来读取足够的记录,以便为下一次传递填充每个队列以比较其XElement属性“TimeStamp”,还记得它已读取的磁盘中的哪个XElement?
谢谢。
答案 0 :(得分:1)
您正在寻找XmlReader
。
表示提供快速,非缓存,仅向前的读者 访问XML数据。
答案 1 :(得分:1)
所以它已经过时了,但这正是SAX解决的问题。它是XML的简单API,基于回调。您启动读取操作,并为每条记录回调您的代码。这可能是一个optioin,因为这不需要程序加载整个XML文件(ala XMLDocument)。谷歌SAX。
答案 2 :(得分:0)
如果您喜欢linq to xml api,this codeplex project可以满足您的需求。