レコードごとに2つの非常に大きなXMLファイルを比較する最良の方法2つの大きなXMLファイル(3GB、80000レコード)があります。1つは別の更新バージョンです。どのレコードが変更されたか(追加/更新/削除された)を特定したい。ファイルにはいくつかのタイムスタンプがありますが、信頼できるかどうかはわかりません。ファイル内のレコードの順序と同じです。ファイルが大きすぎてXMLとしてメモリにロードできません(1つでも、両方を気にしないでください)。私が考えていたのは、IDのメモリ内マップを使用して、レコードレベルの最初のファイル内でコンテンツオフセットの何らかの解析/インデックス付けを行い、2番目のファイルをストリームし、ランダムアクセスを使用して比較することです両方に存在するレコード。これにはおそらく2〜3パスかかりますが、それで問題ありません。それを可能にする簡単なライブラリ/アプローチは見つかりません。VTDNavHugeを使用したvtd-xmlはおもしろそうですが、事前に保存された場所に基づくレコードのランダムアクセスの再訪と読み込みをサポートしているかどうかを(ドキュメントから)理解できません。Javaライブラリ/ソリューションが推奨されますが、C#も使用できます。1違いが発生するまでSAXまたはStAXを使用して両方のドキュメントを同時に解析し、終了します。ドキュメントをメモリに保持しません。標準のXMLライブラリはすべて、S(t)AXをサポートします。