2010-09-15 48 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>和出隊元素......使用循環緩衝區內,我相信。)