合并两个xml文件LINQ

时间:2011-02-08 20:14:08

标签: c# xml linq merge

我在合并两个XML文件时遇到问题。 我将两个文件加载到两个对象中,找到两个对象中的目标节点并尝试合并。

以下是一个示例:

var nodes1 = XResult1.Descendants("subject");
var nodes2 = XResult2.Descendants("subject");

//nodes1.Add(nodes2.Nodes());

// *要合并的代码** 有人可以帮助我。 提前谢谢...... BB

这是我的XResult1:

<subjects>
    <subject>
        <node id="1">
            Hi
        </node>
        <node id="2">
            Hi again
        </node>
        <node id="3">
            Hi once more
        </node>
    </subject>
</subjects>

这是我的XResult2:

<subjects>
    <subject>
        <node id="4">
            Hello
        </node>
        <node id="5">
            Hello again
        </node>
    </subject>
</subjects>

我的最终结果应该是:

<subjects>
    <subject>
        <node id="1">
            Hi
        </node>
        <node id="2">
            Hi again
        </node>
        <node id="3">
            Hi once more
        </node>
        <node id="4">
            Hello
        </node>
        <node id="5">
            Hello again
        </node>

    </subject>
</subjects>

2 个答案:

答案 0 :(得分:3)

你想改变:

XResult1.Descendants("subjects").FirstOrDefault(); 
XResult2.Descendants("subjects").FirstOrDefault();

XResult1.Descendants("subject").FirstOrDefault();
XResult2.Descendants("subject").FirstOrDefault(); 

这是一个更完整的例子:

XDocument document = XDocument.Load(@"C:\XResult1.xml");
XElement subjectElement = document.Descendants("subject").FirstOrDefault();

XDocument document2 = XDocument.Load(@"C:\XResult2.xml");
XElement subjectElement2 = document2.Descendants("subject").FirstOrDefault();

subjectElement.Add(subjectElement2.Nodes());

答案 1 :(得分:0)

如果要合并subject元素中的元素,则需要在树中进一步向下移动,因此请将nodes1nodes2设置为以下内容:

XElement nodes2 = XResult2.Descendants("subjects").Descendants("subject").FirstOrDefault();