C# 如何将一个XDocument中的元素替换为另一个XDocument中的元素?
我有一个XDocument,其中包含许多数据项 我有另一个XDocument,它包含一个非常小的数据项集合。较小文档中的数据项在较大文档中具有匹配路径处的相应元素 我要做的是循环遍历较小的文档,对于找到的每个元素,我要更新较大的文档,以便用较小文档的值替换其相应的值 例如,较大的文档:C# 如何将一个XDocument中的元素替换为另一个XDocument中的元素?,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个XDocument,其中包含许多数据项 我有另一个XDocument,它包含一个非常小的数据项集合。较小文档中的数据项在较大文档中具有匹配路径处的相应元素 我要做的是循环遍历较小的文档,对于找到的每个元素,我要更新较大的文档,以便用较小文档的值替换其相应的值 例如,较大的文档: <Rootelement> <Desktop> <A> <El1 label="original blah" /> </A&g
<Rootelement>
<Desktop>
<A>
<El1 label="original blah" />
</A>
</Desktop>
<Desktop>
<B>
<El2 />
</B>
</Desktop>
<Desktop>
<C>
<El3 label="I'm the label" tooltip="I'm the tooltip" />
</C>
</Desktop>
</Rootelement>
<Rootelement>
<Desktop>
<C>
<El3 label="The NEW Label" tooltip="The NEW Tooltip" />
</C>
</Desktop>
</Rootelement>
对我来说,最好的方法是什么?这看起来不错,但是
XPathSelectElement
在XDocument
上似乎不可用。我读到我需要包括System.Linq,但我已经引用了它,它仍然没有被认可。那只卖3.5美元吗?我使用的是4.0。它位于System.Xml.XPath
namespace这看起来不错,但是XPathSelectElement
在XDocument
上似乎不可用。我读到我需要包括System.Linq,但我已经引用了它,它仍然没有被认可。那只卖3.5美元吗?我使用的是4.0,它位于System.Xml.XPath
名称空间中
var xDocBig = XDocument.Parse(xmlBig);
var xDocSmall = XDocument.Parse(xmlSmall);
var eBig = xDocBig.XPathSelectElement("/Rootelement/Desktop/C");
var eSmall = xDocSmall.XPathSelectElement("/Rootelement/Desktop/C");
eBig.ReplaceWith(eSmall);
var newXml = xDocBig.ToString();
var xDocBig = XDocument.Parse(xmlBig);
var xDocSmall = XDocument.Parse(xmlSmall);
var eBig = xDocBig.XPathSelectElement("/Rootelement/Desktop/C");
var eSmall = xDocSmall.XPathSelectElement("/Rootelement/Desktop/C");
eBig.ReplaceWith(eSmall);
var newXml = xDocBig.ToString();