我正在编写一个输出模块,以便在另一个程序中可视化我的数据。
如果检查代码,我将点坐标添加到字符串,然后将此字符串作为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);
答案 0 :(得分:6)
对于此数据量,请使用XmlWriter
代替XmlDocument
。流和资源不再是问题。
答案 1 :(得分:1)
Flo是正确的,但是你的整个迭代机制有点令人困惑,并且可能以更自然的方式编写,创建XML对象而不是使用一些字符串连接。
你在这里做的一件非常沉重的事情就是当你应该使用一个字符串构建器时用字符串来摧毁你的记忆,并且通过启发式你甚至可以准确地默认字符串构建器的大小,或者通过将你的粒子数乘以长度来接近它将为每个粒子生成的字符串的通用长度。
如果您要坚持使用字符串连接,请务必使用stringbuilder,否则我建议使用适当的XML对象来保存XML数据而不是字符串。