我有几个相当大的XML文件,表示从第三方供应商使用的系统导出的数据.我在每个XML文件的2,500条记录中砍掉结果,因为文件变得庞大而且难以管理.但是,第三方供应商要求我将所有这些XML文件合并到一个文件中.这些XML文件有78个,总大小超过700MB!疯了,我知道......那么你将如何组合这些文件来使用C#来容纳供应商?希望有一种真正有效的方法来实现这一点,而无需使用LINQ一次读取所有文件:-)
我要冒险假设你的 xml 看起来像这样:
<records>
<record>
<dataPoint1/>
<dataPoint2/>
</record>
</records>
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,我将打开一个文件流并写入该<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>");
}
Run Code Online (Sandbox Code Playgroud)