3

C#でxsdスキーマを使用して大きなxmlファイルを検証したいと思います。1000行のxmlコードのファイルの場合、検証には長い時間がかかります。

より速く検証するためのヒントやコツはありますか?

大規模なxml検証でより高速に動作するコード例を投稿できますか?

編集1:私はこのように 検証しますXSDでXMLを検証します

編集2:大きなファイルの場合は10秒以上かかります。そして、検証を1秒以内に非常に高速にする必要があります。

編集3:ファイルサイズが10Mbを超えています

編集4:私もこのアプローチを検討しています。xmlファイルをデータベースとxsdにも保存したいと思います。

4

2 に答える 2

4

現在、ドキュメント全体をメモリにロードしていますが、これは検証に関係なくコストがかかります。より良いオプションは、リーダーを介して解析することです。つまり、MSDNでここに示されています。そのページの例の要点は次のとおりです。

  • ドキュメント全体が読み込まれることはありません
  • while(reader.Reader())ノードレベルでファイル全体を列挙するだけです
  • 検証は、XmlReaderSettings
于 2011-12-22T13:11:30.380 に答える
2

検証ありのドキュメントの解析には、検証なしの解析の約2倍の時間がかかると予想するのが妥当です。ただし、その比率はスキーマによって大きく異なります。たとえば、すべての属性が正規表現によって制御され、正規表現が複雑な場合、検証のオーバーヘッドは、この経験則が示唆するよりもはるかに高くなる可能性があります。

また、これは複雑なスキーマを構築するコストを考慮に入れていません。数百の要素タイプを定義する大きなスキーマがある場合、スキーマのコンパイルは、数メガバイトのデータの検証に使用するよりも時間がかかる可能性があります。

于 2011-12-22T18:00:10.670 に答える