URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3905
[ Назад ]

Исходное сообщение
"как правильно записать данные в XML-файл"

Отправлено Alex Golubin , 17-Фев-06 17:01 
Стоит задача на рабочих станциях пользователей
1) вытаскивать данные из активного каталога через LDAP-запрос;
2) позволять их редактирование пользователями;
3) сохранять в одном для всех XML-файле на сервере для последующего парсинга, проверки и записи в активный каталог с подтверждения админа.
Была написана оболочка .hta со вставками javascript, в которых без особого труда решены пп 1) и 2). На п.3) возникла проблема как правильно написать сохранение в xml-файл, чтобы документ:
1) всегда содержал корневой элемент;
2) имел минимальную вероятность быть испорченным в процессе записи двумя сессиями одновременно.
По определённым причинам использование объекта Scripting.FileSystemObject с дальнейшим методом OpenTextFile никак нельзя считать приемлемым.
Поскольку мои личные познания на этом рубеже заканчиваются :), не может ли уважаемый All подсказать методы решения п.3) задачи в цивилизованном мире. Если не очень затруднит, то с указанием ссылок в msdn или примерами.
С уважением,
Голубин Александр

Содержание

Сообщения в этом обсуждении
"как правильно записать данные в XML-файл"
Отправлено Alex Golubin , 17-Фев-06 17:14 
Прочитал два способа записи в XML-файл. Прошу принять во внимание следующее:
1) добавление элементов в файл происходит распределённо как по месту, так и по времени;
2) пользователей домена несколько тысяч, а значит грузить весь файл к клиенту, доформировывать его и сохранять назад не целесообразно.

Расчитываю на то, что есть способ сохранения элементов в хранилище данных xml по технологии клиент-сервер, по аналогии с запросами insert и update.
Если кто знает, как это всё настроить, выскажитесь пожалуйста

С уважением,
Голубин Александр



"как правильно записать данные в XML-файл"
Отправлено Akademic , 17-Фев-06 17:16 
>2) имел минимальную вероятность быть испорченным в процессе записи двумя сессиями одновременно.

Для разрешения конфликтов на запись с древних времён используют блокировки и очереди запросов.
При доступе проверяется специальный файл или другой источник (БД, память...) на тему "не пишет ли кто уже", если нет, то ставится такая метка, а после окончания работы снимается. Если метка уже есть, то можно либо остановиться, либо положить запрос на запись в очередь (тоже файл или что-н. там), а затем запрос отрабатывается.


"как правильно записать данные в XML-файл"
Отправлено Alex Golubin , 17-Фев-06 17:24 
>Для разрешения конфликтов на запись с древних времён используют блокировки и очереди
>запросов.
>При доступе проверяется специальный файл или другой источник (БД, память...) на тему
>"не пишет ли кто уже", если нет, то ставится такая метка,
>а после окончания работы снимается. Если метка уже есть, то можно
>либо остановиться, либо положить запрос на запись в очередь (тоже файл
>или что-н. там), а затем запрос отрабатывается.
согласен, так и делал в начале при помощи lck-файла, но к сожалению, сам метод доступа при помощи OpenTextFile("..", forAppending); не позволяет сохранить корневой элемент разметки xml
есть способы, вернуться назад, затереть закрывающий корневой элемент, записать субэлемент и завершить файл закрывающим корневым элементом? я не нашёл