我需要在C#中對相當大的XML文件進行一些處理(這裏可能大於千兆字節),包括執行一些複雜的xpath查詢。我遇到的問題是,我通常會通過System.XML庫執行此操作的標準方式喜歡在執行任何操作之前將整個文件加載到內存中,這可能會導致此大小的文件出現內存問題。如何最好地在.NET中使用XPath與非常大的XML文件?
我不需要更新文件,只需讀取它們並查詢其中包含的數據即可。一些XPath查詢涉及很多層次的父子關係 - 我不確定這是否會影響使用流讀取器的能力,而不是將數據作爲塊加載到內存中。
我可以看到使它工作的一種方式是使用基於流的方法執行簡單分析,也許將XPath語句包裝成XSLT轉換,然後我可以在文件之間運行這些轉換,雖然看起來有些複雜。
或者我知道有一些XPath查詢不會運行的元素,所以我想我可以根據它的原始樹結構將文檔分解成一系列較小的碎片,這可能足夠小在內存中進程不會造成太大的破壞。
我試圖在這裏解釋我的目標,所以如果我在一般方法方面吠叫完全錯了,我相信你的鄉親可以設置我的權利......
XPathDocument也是一個輕量級的課程。 – 2009-01-02 17:06:28
XPathDocument的問題是整個文檔將被加載到內存中。 – 2009-01-02 17:10:37