簡體   English   中英

如何使用XmlReader讀取XML文檔的最后N個元素?

[英]How do I read the last N elements of an XML document using 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將文件作為流讀取。

您可以保留一個循環緩沖區-在解析每個元素時將其添加到緩沖區中(因為您將不會解析整個內容,因此可以XElement.Load與位於元素開頭的閱讀器一起使用)並丟棄閱讀新元素時的舊元素。 您將創建大量的垃圾,但是如果運氣好的話,大多數將在gen0中進行,因此不會造成太多問題。

我不知道主框架內有任何循環緩沖區類,但是您可以自己編寫一個通用的類,找到第三方庫,也可以在閱讀代碼中硬編碼循環性。

(相信,您可以根據需要使用Queue<T>並出隊元素...我相信內部使用循環緩沖區。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM