2010-09-15 52 views
1

说我有这样的:如何使用XmlReader读取XML文档的最后N个元素?

<parent> 
    <child name="1" /> 
    <child name="2" /> 
    ... 
    <child name="8000001" /> 
    <child name="8000002" /> 
    <child name="8000003" /> 
    <child name="8000004" /> 
    <child name="8000005" /> 
</parent> 

如何阅读过去五年的子元素?由于文件的大小,无法使用XElement.Parse(...)等文件需要使用XmlReader作为流读取。

回答

1

你可以保持一个循环缓冲区 - 每个元素添加到缓冲区为你解析它(正如你将不会被解析了整个事情,你可以使用XElement.Load位于元素的开始读者),并在阅读新内容时扔掉旧元素。你会创造一大堆垃圾,但运气大部分都会在gen0中,所以不会造成太多问题。

我不知道主框架内的任何循环缓冲区类,但是您可以自己编写一个通用缓冲区类,找到第三方库,或者只是在读取代码中对循环类进行硬编码。

(哎呀,你可以只使用作为需要Queue<T>和出队元素......使用循环缓冲区内,我相信。)