Согласовать обновления XML - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть набор 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 так, как я хочу, поэтому я могу добавить атрибут в качестве идентификатора элемента, если это поможет, но я бы предпочел не делать этого.

Спасибоза помощь.Если есть другие предложения о том, как управлять этим сценарием, которые не включают XML, я также открыт для этих идей.

1 Ответ

0 голосов
/ 24 февраля 2011

Я думаю, что добавление уникального идентификатора (т. Е. GUID) к каждому фрагменту может быть самым простым способом быстрого и точного объединения документов.Если эти файлы редактируются программно, вы можете создать GUID на сервере или автономном клиенте для новых фрагментов, и вам не нужно беспокоиться о коллизиях.Такую систему будет легче отлаживать и обслуживать, чем систему, которая пытается определить, изменился ли фрагмент или он является новым.

Я не знаю ни одной встроенной библиотеки, которая могла бы идентифицировать крупномасштабные изменения в тексте.Вы могли бы подключиться к Subversion или другой библиотеке управления исходным кодом, в которой есть код для определения того, как изменился текст, но я думаю, что это будет слишком сложно для того, что требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...