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

C# 如何使用XmlReader读取XML文档的最后N个元素?,c#,xmlreader,C#,Xmlreader,假设我有这个: <parent> <child name="1" /> <child name="2" /> ... <child name="8000001" /> <child name="8000002" /> <child name="8000003" /> <child name="8000004" /> <child name="8000005" /> &l

假设我有这个:

<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将文件作为流读取。

您可以保留一个循环缓冲区-在解析时将每个元素添加到缓冲区(由于您不会解析整件事,您可以使用位于元素开头的读取器)当你阅读新的内容时,扔掉旧的内容。您将创建大量垃圾,但如果运气好的话,大部分垃圾将在gen0中,因此不会造成太多问题

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


(见鬼,你可以根据需要使用
队列
和出列元素……我相信它在内部使用循环缓冲区。)

你可以保留一个循环缓冲区-在解析缓冲区时将每个元素添加到缓冲区中(由于你不会解析整个内容,你可以使用位于元素开头的读卡器)当你阅读新的内容时,扔掉旧的内容。您将创建大量垃圾,但如果运气好的话,大部分垃圾将在gen0中,因此不会造成太多问题

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

(见鬼,您可以根据需要使用
队列
和出列元素……我相信它在内部使用循环缓冲区。)