powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / сравнение двух xml
10 сообщений из 10, страница 1 из 1
сравнение двух xml
    #39288009
sanringo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даны два xml-файла: старый и новый. Оба содержат данные о товарах с элементами <product>. Задача вывести продукты, которые изменились, новые и исчезнувшие. Требования: быстрота обработки, минимум занимаемой памяти при обработке.
Пока на ум приходит задействовать SAX парсер. Считать из нового файла первый объект, пробежаться по старому файлу. Если нашли, то сравниваем, иначе в результат с пометкой "новый". Если не равны заносим в результат с пометкой "изменён".
Может есть вариант по-проще и спец библиотеки?
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288019
Фотография nb_brain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanringo Считать из нового файла первый объект, пробежаться по старому файлу. Если нашли, то сравниваем, иначе в результат с пометкой "новый".
Потом считать второй объект и снова пробежаться по старому файлу? Имхо это не самый эффективный способ. O(n^2)

На вскидку я бы предложил вариант тем же SAX или StAX прочитать все продукты из первого файла и поскладывать их в хэшмап (их уникальное представление в качестве key), потом продукты из второго файла и в тот же хэшмап. В качестве value объект с данными которые нужно проверить на изменение и статус ("есть только в первом файле", "есть только во втором", "есть и там и там данные не поменялись", "есть и там и там данные поменялись"). Ну или типа того. Так должно получиться O(n).

Правда не знаю насколько подобное подойдет вам по памяти, но должно быть быстрее чем полный проход второго файла для каждого элемента из первого.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288025
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288032
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

XMLUnit + assertXMLEquals(xml1, xml2)

+1

С уважением, Валентин
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288124
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно через xslt преобразование получить фактически выжимку из новых или исчезнувших.
есть плюсы есть минусы у подхода.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288191
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingесть плюсы есть минусы у подхода.
+1
Вообще, XML это транспорт из точки А в точку Б.
Анализировать надо в информационной системе.
Было бы странно, если бы вы в тачке строителей по пути начали песок анализировать.
Есть вариант загнать в ИС (субд) накладные и там уже сравнивать.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288634
iPOJO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаешь два потока, в каждом из них запускаешь
Код: java
1.
SAXParser.parse(file, handler)


для своего файла.
Когда попадается товар, смотришь по id, а не попадался ли такой товар уже в другом файле. Для этого создаешь хэш-таблицу
Код: java
1.
new ConcurrentHashMap<productId, MetaInfo>()


где MetaInfo - небольшой объект с полями productId, хэшем и доп. признаками, если надо.
Использовать атомарный метод Map.putIfAbsent().
Если товар не встречался, то вставляем в таблицу, если встречался - сравниваем хэши.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288635
iPOJO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS хеши от контента товара, разумеется.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288744
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanringo, xml не очень годен для сравнений.

Если-бы продукты лежали в БД - то можно было взять реляционный оператор MINUS
и решить задачу в 1 строчку.

В твоем случае я-бы внес больше доп-информации в сам документ. В заголовок
положить учет количества документов, их даты обновлений, и неплохо-бы обеспечить
сортировку product-ов по какому-то полю.
...
Рейтинг: 0 / 0
сравнение двух xml
    #39288777
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mayton]sanringo, xml не очень годен для сравнений.

Если-бы продукты лежали в БД - то можно было взять реляционный оператор MINUS
и решить задачу в 1 строчку.

если бы продукты лежали бы в БД и нужно было бы сравнить если есть совпадения в продуктых с ссылкой на заказы, категорию, роль категоии и т.д. вглубь то становится неитересно на уровне бд сравнивать.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / сравнение двух xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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