Я собираюсь выйти на конечность и предположить, что ваш XML выглядит примерно так:
<records>
<record>
<dataPoint1/>
<dataPoint2/>
</record>
</records>
Если это так, я бы открыл поток файлов и записал часть <records>
, затем последовательно открыл каждый файл XML и записал все строки (кроме первой и последней) на диск. Таким образом, у вас не будет огромных строк в памяти, и все должно быть очень, очень быстро для кодирования и запуска.
public void ConsolidateFiles(List<String> files, string outputFile)
{
var output = new StreamWriter(File.Open(outputFile, FileMode.Create));
output.WriteLine("<records>");
foreach (var file in files)
{
var input = new StreamReader(File.Open(file, FileMode.Open));
string line;
while (!input.EndOfStream)
{
line = input.ReadLine();
if (!line.Contains("<records>") &&
!line.Contains("</records>"))
{
output.Write(line);
}
}
}
output.WriteLine("</records>");
}