powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XmlDiff -ТУФТА, Майкрософт снова гонит...
12 сообщений из 12, страница 1 из 1
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32290254
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот появилась задачка: Найти разницу между двумя версиями xml файла.
Накопал у мелкомягких классы для оно процедуры. Первый класс содержит один метод Compare, который определяет есть ли разница(result bool) и выдает файл - дескриптор, с описанием всех изменений. Второй класс также имеет всего один метод Patch, который используя файл-дискриптор от мервого, патчит начальный файл таким образом приводя его к состоянию конечного(почти). Вопрос: им что, нечем больше занятся?
Файл-дескриптор сам по себе ничего мне не дает, он содержит описание изменений, и польза от него только второму классу. Блин.
У меня задача, выловить изменения и родить 3 файла : Deleted, Updated, Changed. С самого начала шеф клятвенно заверял что в этих классах усе будет. Вот такая пертушка.
Выходов получается два:
1.Писать свой парсер для производного файла и по нему рожать 3 нужных. Благо спецификацию к нему нарыл.
2.Послать в сад мелкомягкие заморочки и писать парсер с самого начала и все делать самому. Но это потянет прилично времени, а его нет.

Что посоветуете? Кто нить заморачивался подобным? Есть ли какие наработки? Может где нить видели что нить подобное? Думал что уже есть но в сети нифига не нашел...




Magnus
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291053
Marina_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если да, может просто пройтись в цикле по элементам и определить какие изменены, какие добавлены или удалены ?
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291061
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залей оба xml в recordset и сопряги их. Эти кажется таким образом сопрягаются. .. не помню уже.
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291159
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Marina_M
Свой парсер писать, не такая уж простая задача.
Одним циклом тут не обойдешься, вариантов изменений слишком много. Например изменен порядок детей у одного из элементов. Как их в таком случае сравнивать? Или порядок атрибутов... Плюс к этому, сравнивать надо не только первый со вторым, но и второй с первым, чтобы выяснить добавленные элементы. Мороки прилично, а времени нет.


2 Павел Воронцов

Залей оба xml в recordset и сопряги их. Эти кажется таким образом сопрягаются. .. не помню уже.
Инетересно. А подробнее можно? Что то я не уловил процесс. Имеется ввиду, залить их вовременные таблицы и там джойнами искать различия? А по результатам создавать новые файлы? Или просто бегать по циклу рекордсета?
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291211
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSet -> Merge -> GetChanges

Подробности в MSDN
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291537
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Почитал, очень интересно. Сейчас попробую. Если получится, это спсет меня от большого гимора.


Magnus
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291917
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. Все вроде правильно и должно работать но ругается на Merge:
Код: plaintext
1.
2.
An unhandled exception of type 'System.Data.DataException' occurred in system.data.dll

Additional information: The same table (y) cannot be the child table in two nested relations.

Не встречалось подобное? Пробовал искать причины ошибки - ничего явного. И в сети тоже не нашел.

Документы практически идентичны, во втором добавлено несколько нодов и пару атрибутов. Структура та же.

Magnus
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32291973
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32292619
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Баг. Та же самая ошибка вылетает для Merge и ReadXml(им тоже можно, если использовать InfereSchema) а все потому что в документе существуют ноды с одинаковой структурой. Бред какой то.
Есть у коллег какие нибудь мысли по этому поводу?

Спасибо.


Magnus
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32292756
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в хелпе ReadXml, может тебе не InferSchema нужна, а DiffGram-режим?
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32292776
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 писал:в документе существуют ноды с одинаковой структурой

Ну тогда опа - как Вы собираетесь различать такие ноды?
...
Рейтинг: 0 / 0
XmlDiff -ТУФТА, Майкрософт снова гонит...
    #32292861
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 hDrummer
Я ж только что писал, на нем вылетает та же ошибка. Diffgram? Вероятно нет. В этом случае читается файл с изменениями и все лепится к основному. У меня же 2 версии одного документа, т.е. небольшие отличия а в остльном они идентичны.

Ну тогда опа - как Вы собираетесь различать такие ноды?
В данном документе не может быть такого варианта, все ноды уникальны(Employees) и если попался дубликат, значит, он есть тоже самое и его не воспринимать.


Magnus
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XmlDiff -ТУФТА, Майкрософт снова гонит...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]