2010-07-26 38 views
1

我正在編寫一個輸出模塊,以在另一個程序中可視化我的數據。需要在C#中使用XMLText的建議

如果您檢查代碼,我將點座標添加到字符串,然後將此字符串作爲TextNode添加到另一個元素。問題是點的數量可以超過500000

有沒有更好的方法來寫很多文本到XML或者這是行嗎?

XMLElement points = doc.CreateElement("VTK", "DataArray"); 

string str = ""; 

for (int i = 0; i < sim.NumberOfParticles; i++) 
{ 
str += sim.pPosX[i].ToString() + " " + sim.pPosY[i] + " " + sim.pPosZ[i] + "\n" 
} 
XmlText coordinates = doc.CreateTextNode(str); 
points.AppendChild(coordinates); 

回答

6

對於該數據量,用XmlWriter代替XmlDocument。它流和資源不再是問題。

+0

Thx很多,我會嘗試XmlWriter。 – Kayhano 2010-07-26 20:30:42

1

Flo的權利,但是您的整個迭代機制有點混亂,可能會以更自然的方式編寫,創建您的XML對象而不是使用某些字符串連接。

你在這裏做的一件非常沉重的事情是,當你應該使用一個stringbuilder時,用字符串打亂你的記憶,並且啓發式你甚至可以準確地默認stringbuilder的大小,或者通過乘你的numberofparticles將爲每個粒子生成的字符串的長度通用長度。

如果你要堅持使用字符串連接,絕對使用stringbuilder,否則我會建議使用正確的XML對象來保存XML數據而不是字符串。

+1

這正是XmlWriter的所在。它是在一個StringBuilder或您選擇的流的頂部實現的,它理解如何正確編碼XML。真的,查看它:http://msdn.microsoft.com/en-us/library/4d1k42hb(VS.71).aspx – 2010-07-26 20:37:51