2009-08-28 81 views
5

我有一個相當大的XML文件,我需要解析成.NET類結構(要映射到固定長度的記錄格式並通過MQ傳輸)。性能很重要,但不是絕對關鍵。XPathNavigator和XmlReader之間的速度差異有多大?

我幾乎總是用XPathNavigator來讀取XML文件,因爲它比XmlReader容易得多。另一方面,我知道XmlReaderXPathNavigator更快,因爲理論上它每次只讀取一個節點,而XPathNavigator必須足夠讀取以執行XPath,可能是整個文檔。

我的問題是:它真的有多快?閱讀幾千個節點時它會產生顯着差異嗎?什麼轉折點我幾乎不得不切換到XmlReader?或者是XPathNavigator優化,以至於它總是一個很好的選擇?

我的大部分XML體驗都在相對較小的文件上,所以我正在尋找來自任何使用大文件的人的輸入。

回答

5

據我所知,唯一可以獲得XPathNavigator實現的地方是來自.Xml.Linq.XDocument或XPathDocument,它們都將整個樹存儲在內存中。

另一方面,XmlReader可以檢索和解析XML流,而無需將一組節點收集到樹中。

因此,假設您收集在一個只進的方式你所有需要的數據,那麼對於大型數據集的XmlReader應該走出單純的基礎上進行的XPathNavigator是: -

  1. 你將不得不deserialise流XML無論如何填充文檔和
  2. 你不需要加載一大堆項目到內存中。
相關問題