我有一组存储简单数据的XML文件。在每种情况下,文件中的数据结构不同,存储不同类型的数据,但总是很简单。服务器上有一个文件,可以脱机下载和更新,也可以在线更新。所以这就是问题所在:如果用户有一个脱机文件更新文件时会发生什么情况会更新,现在他们想将更改上传到服务器?有没有办法在.Net中处理这个问题?这些变化并不频繁也是值得的。在大多数情况下,将为重大更改创建一个新文件;我们只是在讨论对旧文件的轻微更新,如果发生这种情况,我想计划更新冲突。
例如:
原始档案:
[person]
[name]Bob[/name]
[address]123 Street[/address]
[phone]123-456-7890[/phone]
[/person]
离线变更:
[person]
[name]Bob[/name]
[address]124 Street[/address]
[phone]123-456-7890[/phone]
[/person]
在线变更:
[person]
[name]Bob[/name]
[address]123 Street[/address]
[phone]124-456-7890[/phone]
[/person]
理想的结果:
[person]
[name]Bob[/name]
[address]124 Street[/address]
[phone]124-456-7890[/phone]
[/person]
在某些情况下,会有新元素合并到基本文件中。我可以选择构建我想要的XML文件,所以我可以添加一个属性作为某种元素ID,如果这会有所帮助,但我不想这样做。
感谢您的帮助。如果有关于如何管理不涉及XML的场景的其他建议,我也会对这些想法持开放态度。
答案 0 :(得分:0)
我认为向每个代码段添加唯一标识符(即GUID)可能是快速准确地合并文档的最简单方法。如果这些文件是以编程方式编辑的,则可以在服务器或脱机客户端上为新的snippest创建GUID,而不必担心冲突。与试图识别片段是否已更改或是新的系统相比,这样的系统将更容易调试和维护。
我不知道任何可以识别文本大规模更改的内置库。您可能可以挂钩到subversion或其他源代码控制库,该库具有用于确定文本更改方式的代码,但我认为这对于所需内容而言过于复杂。