C# 合并两个xml文件LINQ
我在合并两个XML文件时遇到问题。 我将两个文件加载到两个对象中,在两个对象中找到目标节点并尝试合并 以下是一个示例: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> &
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()。我的回答是正确的。