我有一个我构建的目录处理器,它通过评估当前状态的基于xml的清单文件并将其与本地manifest.xml进行比较来自我更新。
我目前正在处理每个节点以查找某些属性的差异,以确定是否需要进行更新。我循环遍历树中的每个节点。
我想知道是否有更优化的XPath或类似方法在2个XmlDocuments上执行'diff'并让它返回所有不同的节点,因此我只能处理它们。
这是一个.NET 2.0 C#应用程序。
谢谢,
约翰
答案 0 :(得分:1)
我过去使用过Xml Diff Patch,看看:http://msdn.microsoft.com/en-us/library/aa302294.aspx
答案 1 :(得分:0)
您无法从XPath获得任何其他帮助。为了实现这种目的,我会得到编辑应用程序来提供帮助。我已经构建了系统,我已经在节点中添加了一个属性,指示它是更新,添加还是已删除。然后我将树级联起来,确保每个祖先都标记为脏(除非已将其标记为其他状态之一)。
要发布更改,使用XSL处理XML,选择具有任何此类状态的所有节点。 脏节点将复制其属性,但只会选择具有状态的子节点。最终你会得到一些只包含已更改项目的XML,并且状态指示要应用的更改。如果需要并发管理,我更喜欢使用版本号属性。