在C#中将多个2 xml文件与同一模式合并在一起的最有效方法是什么?

Rob*_*ood 6 c# xml

我有几个相当大的XML文件,表示从第三方供应商使用的系统导出的数据.我在每个XML文件的2,500条记录中砍掉结果,因为文件变得庞大而且难以管理.但是,第三方供应商要求我将所有这些XML文件合并到一个文件中.这些XML文件有78个,总大小超过700MB!疯了,我知道......那么你将如何组合这些文件来使用C#来容纳供应商?希望有一种真正有效的方法来实现这一点,而无需使用LINQ一次读取所有文件:-)

Jus*_*ren 4

我要冒险假设你的 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)