如何使用XmlReader读取XML文档的最后N个元素?

时间:2010-09-15 09:11:13

标签: c# xmlreader

说我有这个:

<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 个答案:

答案 0 :(得分:1)

你可以保留一个循环缓冲区 - 在解析它时将每个元素添加到缓冲区(因为你不会解析整个事情,你可以使用XElement.Load阅读器位于元素的开头)并在阅读新元素时丢弃旧元素。你会创造大量的垃圾,但运气好的话,大部分会在gen0中,所以不会造成太多问题。

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

(哎呀,你可以只使用Queue<T>并根据需要将元素出列...我相信内部使用循环缓冲区。)

相关问题