是否存在两个XmlDocuments的.NET XPath'diff'命令?

时间:2010-02-14 22:40:01

标签: c# .net xml xpath

我有一个我构建的目录处理器,它通过评估当前状态的基于xml的清单文件并将其与本地manifest.xml进行比较来自我更新。

我目前正在处理每个节点以查找某些属性的差异,以确定是否需要进行更新。我循环遍历树中的每个节点。

我想知道是否有更优化的XPath或类似方法在2个XmlDocuments上执行'diff'并让它返回所有不同的节点,因此我只能处理它们。

这是一个.NET 2.0 C#应用程序。

谢谢,

约翰

2 个答案:

答案 0 :(得分:1)

我过去使用过Xml Diff Patch,看看:http://msdn.microsoft.com/en-us/library/aa302294.aspx

答案 1 :(得分:0)

您无法从XPath获得任何其他帮助。为了实现这种目的,我会得到编辑应用程序来提供帮助。我已经构建了系统,我已经在节点中添加了一个属性,指示它是更新添加还是已删除。然后我将树级联起来,确保每个祖先都标记为(除非已将其标记为其他状态之一)。

要发布更改,使用XSL处理XML,选择具有任何此类状态的所有节点。 节点将复制其属性,但只会选择具有状态的子节点。最终你会得到一些只包含已更改项目的XML,并且状态指示要应用的更改。如果需要并发管理,我更喜欢使用版本号属性。