複雑な xpath クエリの実行を含め、C# でかなり大きな XML ファイル (ここでは、1 ギガバイトを超える可能性がある) に対して何らかの処理を行う必要があります。私が抱えている問題は、System.XML ライブラリを介して通常これを行う標準的な方法では、何かを実行する前にファイル全体をメモリにロードするのが好きであり、このサイズのファイルでメモリの問題が発生する可能性があることです。
ファイルを読み取って、ファイルに含まれるデータを照会するだけで、ファイルを更新する必要はまったくありません。一部の XPath クエリは非常に複雑で、いくつかのレベルの親子型関係にまたがっています。これが、データをブロックとしてメモリにロードするのではなく、ストリーム リーダーを使用する機能に影響するかどうかはわかりません。
これを機能させる方法の 1 つは、ストリーム ベースのアプローチを使用して単純な分析を実行し、XPath ステートメントを XSLT 変換にラップして、後でファイルに対して実行できるようにすることです。ただし、少し複雑に思えます。
または、XPath クエリが実行されない要素がいくつかあることを知っているので、ドキュメントを元のツリー構造に基づいて一連の小さなフラグメントに分割できると思います。あまりにも多くの混乱を引き起こします。
ここで私の目的を説明しようとしたので、一般的なアプローチに関して完全に間違ったツリーを吠えている場合は、皆さんが私を正しく設定できると確信しています...