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中,因此不会造成太多问题
我不知道主框架中有任何循环缓冲区类,但您可以自己编写一个通用缓冲区类,找到第三方库,或者在阅读代码中硬编码循环
(见鬼,您可以根据需要使用队列和出列元素……我相信它在内部使用循环缓冲区。)