2012-03-09 50 views
3

我已經編寫了一個控制檯應用程序來從Web服務器獲取一些信息,將其轉換爲XML並保存。我手動創建了XML(使用StringBuilder附加字符串)。由於XML可能非常大,對於內存而言,使用StringBuilderXMLDocument類還是更好? 準確地說,我的問題是,如果XML是10mb文本,那麼使用StringBuilder.append("")System.XML命名空間的內存效率如何?StringBuilder或XMLDocument?

我認爲一個更有效的方法是使用StringBuilder,但每次迭代後將HD保存到HD上的文件並清除stringbuilder對象。任何意見? 在此先感謝。 :)

回答

10

兩者都沒有;我會用一個XmlWriter

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

這避免了緩衝大量內存中的數據,這既StringBuilderXmlDocument會做的,而且避免了所有你將面對如果手動創建XML編碼問題(不一個好主意,說實話)。

+0

感謝您的輸入:) – 2012-03-09 08:48:45

5

我不會使用StringBuilder來手動創建XML,但有太多錯誤空間(如果它正確地轉義字符串)。

要編寫更大尺寸的XML文件,您應該使用XmlWriter類。

+0

您是對的我意識到它容易出錯,但我的XML不太複雜,它太大了。 :) – 2012-03-09 09:43:08

0

如果您有XML的XSD,我會使用xsd.exe XML Schema Definition Tool,它可以從中生成c#類。
從代碼中很容易序列化和反序列化XML,因此您不必使用長字符串。只需構建您的課堂並將其保存爲有效的XML文本。

+0

是的,我知道,但目前我只是在尋找性能。謝謝 :) – 2012-03-09 09:27:47