在合并两个XML文件之前添加root

时间:2013-12-11 13:13:53

标签: c# xml linq-to-xml

我有两个XML文件,我创建了一个包含两个文件的新文件。这里的问题是,两者都有不同的根节点,当两者合并在一起时,我实际上收到了我想要做的事情,但是有两个不同的根节点,而不是XML符合。那么如何在插入其余节点之前添加默认节点呢?

结构如下:

文件1:

<rootFile1>
  //dataFile1
</rootFile1>

文件2:

<rootFile2>
  //dataFile2
</rootFile2>

合并到:

//missing root
  <rootFile1>
    //dataFile1
  </rootFile1>
  <rootFile2>
    //dataFile2
  </rootFile2>
//missing root

我需要一个包装器节点,用于组合文件。

我的代码如下所示:

    XmlTextReader xmlreader1 = new XmlTextReader(@"N:\File.xml");
    XmlTextReader xmlreader2 = new XmlTextReader(@"N:\File2.xml");

    using (var output = System.IO.File.Create(@"N:\OutputFile.xml"))
    {
        XElement root = new XElement("root");
        foreach (var file in new[] { @"N:\File.xml", @"N:\File2.xml" })
        {
            using (var input = System.IO.File.OpenRead(file))
            {
                input.CopyTo(output);
            }
        }
        root.Add(output);
    }

提前致谢,谢谢。

1 个答案:

答案 0 :(得分:4)

试试这段代码:

XDocument doc1 = XDocument.Load("N:\File.xml");
XDocument doc2 = XDocument.Load("N:\File2.xml");
XDocument merged = new XDocument(new XElement("root", doc1.Root, doc2.Root));
merged.Save("N:\Merged.xml");