合并XDocument中的XML文件

时间:2008-11-11 08:14:56

标签: c# xml linq-to-xml

我正在尝试在单个XDocument对象中合并多个XML文件。

XDocument对象中不存在合并。我想念这个。

是否有人已经为XDocument实现了Merge扩展方法,或类似的东西?

4 个答案:

答案 0 :(得分:24)

我自己尝试了一下:

var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());

我不知道它是好还是坏,但它对我来说很好: - )

答案 1 :(得分:3)

务实,XDocument vs XmLDocument不是全有或全无(除非你在Silverlight上) - 所以如果XmlDoucument做了你需要的事情,{{1}然后,可能会使用XDocument(与XmlDocument等)。

也就是说,即使使用ImportNode,您也可以使用XDocument导入每个,然后只需XNode.ReadFrom将其导入主集合。

当然,如果文件很大,.Add可能更有效......但更复杂。幸运的是,XmlReader/XmlWriterXmlWriter方法接受WriteNode,因此您可以导航到XmlReader中的第一个子项,然后将其闪烁到输出文件中。类似的东西:

XmlReader

答案 2 :(得分:3)

将所有xml文件从dir合并到一个XDocument

public static XDocument MergeDir(string xmlDir)
{
    XDocument xdoc = XDocument.Parse("<root></root>");
    System.IO.DirectoryInfo directory = new DirectoryInfo(xmlDir);
    if (directory.Exists)
    {
        foreach (System.IO.FileInfo file in directory.GetFiles())
        {
            if (file.Extension == ".xml")
            {
                xdoc.Root.Add(XDocument.Load(file.FullName).Root.Elements());
            }
        }
    }

    return xdoc;
}

答案 3 :(得分:0)

作为一种变通方法,您可以使用XSL文件合并XML文件,然后将其转换为XDocument对象。