C# 合并两个xml文件LINQ

C# 合并两个xml文件LINQ,c#,xml,linq,merge,C#,Xml,Linq,Merge,我在合并两个XML文件时遇到问题。 我将两个文件加载到两个对象中,在两个对象中找到目标节点并尝试合并 以下是一个示例: var nodes1 = XResult1.Descendants("subject"); var nodes2 = XResult2.Descendants("subject"); //nodes1.Add(nodes2.Nodes()); //*要合并的代码** 谁能帮帮我吗。 先谢谢你。。。BB 这是我的XResult1: <subjects> &

我在合并两个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> 你好 你好 再一次你好 你好 你好
如果要合并
subject
元素中的元素,则需要在树中进一步向下,因此将
节点1
节点2
设置为以下值:

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

如果要合并
subject
元素中的元素,则需要在树中进一步向下,因此将
节点1
节点2
设置为以下值:

XElement nodes2 = XResult2.Descendants("subjects").Descendants("subject").FirstOrDefault();
您要更改:

XResult1.Descendants("subjects").FirstOrDefault(); 
XResult2.Descendants("subjects").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());
您要更改:

XResult1.Descendants("subjects").FirstOrDefault(); 
XResult2.Descendants("subjects").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());

@Russell McClure你是对的,出于某种原因,我在考虑列表。fixed.FirstOrDefault()只需要第一个元素,但实际上我需要XResult2中的所有元素。@BumbleBee您的XML文件显示您只有一个
元素,而这个元素又有许多
elements@Russell麦克卢尔你说得对,出于某种原因,我在考虑名单。fixed.FirstOrDefault()只需要第一个元素,但实际上我需要XResult2中的所有元素。@BumbleBee您的XML文件显示您只有一个
元素,而这个元素又有许多
elements@Russell. 非常感谢。我的系统挂起在subjectElement.Add(subjectElement2.Nodes());我注意到的另一件事是.FirstOrDefault()只返回第一个标记,但实际上我需要所有标记。如果您说每个XML文档有多个标记,那么您需要使用正确的XML更新您的问题。好的。因此,您的代码现在的问题是,您没有像我在回答中所显示的那样调用FirstOrDefault()。“我的回答是正确的。”拉塞尔说。非常感谢。我的系统挂起在subjectElement.Add(subjectElement2.Nodes());我注意到的另一件事是.FirstOrDefault()只返回第一个标记,但实际上我需要所有标记。如果您说每个XML文档有多个标记,那么您需要使用正确的XML更新您的问题。好的。因此,您的代码现在的问题是,您没有像我在回答中所显示的那样调用FirstOrDefault()。我的回答是正确的。