我有一个包含许多数据项的XDocument。
我有另一个包含非常小的数据项集合的XDocument。较小文档中的数据项在匹配路径的较大文档中具有相应的元素。
我想要做的是遍历较小的文档,对于我发现的每个元素,我想要更新较大的文档,以便将其相应的值替换为较小的文档。
例如,较大的文档:
<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>
我想在路径Rootelement/Desktop/C/El3
处获取元素,并将较大文档中相同路径的元素替换为较小文档中的元素,因此大文档将变为:
<Rootelement>
<Desktop>
<A>
<El1 label="original blah" />
</A>
</Desktop>
<Desktop>
<B>
<El2 />
</B>
</Desktop>
<Desktop>
<C>
<El3 label="The NEW Label" tooltip="The NEW Tooltip" />
</C>
</Desktop>
</Rootelement>
对我来说,最好的方法是什么?
答案 0 :(得分:3)
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();