2012-03-09 10 views
3

Webサーバーから情報を取得し、XMLに変換して保存するコンソールアプリケーションを作成しました。私は手動でXMLを作成しました(StringBuilderを使用して文字列を追加しました)。 XMLが非常に大きいかもしれないので、メモリに関しては、StringBuilderまたはXMLDocumentクラスなどを使用する方が良いでしょうか? 私の質問に正確に言えば、XMLが10MBのテキストのようなものなら、StringBuilder.append("")またはSystem.XML名前空間を使用するとメモリが効率的ですか?StringBuilderまたはXMLDocument?

より効率的な方法は、StringBuilderを使用することですが、繰り返しごとにXMLをHD上のファイルに保存し、stringbuilderオブジェクトをクリアすることだと思います。コメントはありますか? ありがとうございます。 :)

答えて

10

どちらもありません。私はXmlWriterを使用したい:

using(var file = File.Create(path)) 
using(var writer = XmlWriter.Create(file)) 
{ 
    // write to writer here 
} 

これはStringBuilderXmlDocumentの両方を行うことになる、メモリに大量のデータをバッファリングする必要がなくなり、およびXMLを手動で作成する場合は、あなたが直面するすべてのエンコーディングの問題を回避し(ありません良いアイデア、正直言って)。

+0

ありがとうございました:) –

5

StringBuilderを使用して手動でXMLを作成することはありませんが、エラーの余地が余りにもあります(適切な文字列のエスケープである場合)。

大きなサイズのXMLファイルを書き込むには、XmlWriterクラスを使用する必要があります。

+0

私は間違いやすいと認識していますが、XMLはあまりにも複雑ではなく、大きすぎます。 :) –

0

xsd.exe XML Schema Definition Toolを使ってXMLからXSDを作成すると、そこからC#クラスを生成できます。
コードから、XMLをシリアライズしてデシリアライズするのは非常に簡単です。そうすれば、長い文字列で作業する必要はありません。あなたのクラスを構築し、それを有効なXMLテキストとして保存するだけです。

+0

はい私はそれを知っていますが、現在私はパフォーマンスを探しています。ありがとう:) –