次のシナリオで大きなXMLファイルを検証する効率的な方法を探しています。
1)ファイルがネットワークから受信されています。
2)提供されたDTDに基づいてxmlの検証が必要です。
3)ノード情報が構成可能なファイルの特定のノードのデータを処理する他のスレッドが実行されています。
4)検証では、ファイル全体が検証されるのを待つために他のスレッドをブロックしてはなりません。
これは長時間実行されるプロセスであるため、xmlファイルは、不明な中断を挟んで数時間、数日、または数か月間、ポートで継続的に受信されます。
私はそのソリューションが必要です
1)リーダー/バリデーターにファイルの最後まで読み取らせてから、検証結果を送信しないでください。
2)データノードにはすべてのデータが含まれているため、データノードへのバリデーターの開始を停止し、一定量のデータのみの読み取りを開始し、読み取りデータをスタンディングスレッドに送信して非同期で処理し、バリデーターに読み取りと送信を続行させます。
上記のアプローチは正しいですか?そのようなxmlバリデーターは存在しますか?それを作成する方法ではない場合は?クラスでIXmlLineInfo、IXmlNamespaceResolverを継承しようとしましたが、それらを実装するのは大変な作業のようです。