3

.NET 3.5 で非常に大きな XML ファイルを処理するための「推奨される」アプローチは何ですか?

書き込みのために、一度に要素を生成してからファイルに追加したい。

読み取りの場合も、要素を一度に (書き込まれた順序で) 読み取りたいと思います。

文字列と File.Append を使用してそれを行う方法はいくつかありますが、.NET 3.5 は、任意に大きな XML ファイルを処理するための XML Api を提供していますか?

4

3 に答える 3

7

詳細に立ち入らないと、これに答えるのは簡単ではありません。.NET は、XML ファイルを処理するためのさまざまな方法を提供します。

  • XmlDocumentは DOM を作成し、XPath クエリをサポートしますが、XML ファイル全体をメモリに読み込みます。
  • XElement / XDocumentは LINQ をサポートしており、XML ファイル全体をメモリに読み込みます。
  • XmlReaderは、前方のみのリーダーです。ファイル全体をメモリに読み込むわけではありません。
  • XmlWriterは、書き込みを除いて XmlReader と同じです。

あなたの言うことに基づいて、XmlReader/XmlWriter の組み合わせが最良のアプローチのようです。

于 2013-05-16T06:19:06.350 に答える
1

Dirk が言ったように、XmlWriter/XmlReader の組み合わせを使用するのが最善の方法のように思えます。非常に長くなる可能性があり、XML ファイルがかなり複雑な場合は非常に扱いにくくなります。私は最近、いくつかの厳しいメモリ制約で同様のことをしなければなりませんでした。私のSOの質問が役立つかもしれません。

しかし、個人的には、MSDN ブログのこの方法は実装が非常に簡単で、XML ファイルの末尾への追加をフラグメントなしで適切に処理できることがわかりました。

于 2013-05-16T11:58:09.513 に答える