Сравните файлы XML из двух папок

Есть ли способ сравнить файлы XML (с одинаковым именем), сохраненные в двух разных папках, и найти разницу между ними? Я хотел бы сравнить несколько файлов XML, хранящихся в разных папках, для целей тестирования. Я рад изучить это на любом языке, таком как Java, скрипт Groovy, python и т. д.,

Пожалуйста, добавьте свои мысли. Очень ценю вашу помощь!

Каково определение разницы? XML-мудрый или двоичный или текстовый?

Michal 19.03.2019 15:13
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
700
4

Ответы 4

В Питоне:

filecmp: Сравнение файлов и каталогов:

import filecmp
cmp = filecmp.cmp('file_1.xml', 'file_2.xml')

# Files are equal
if cmp:
    continue
else:
    out_file.write('file_1.xml') 

Чисто и по существу для python. +1

MS90 19.03.2019 13:11

Для Java что-то вроде

  public static void main(String[] args) throws IOException {
        File file1 = new File("aaa.xml");
        File file2 = new File("bbb.xml");
        boolean areTwoFilesEqual = FileUtils.contentEquals(file1, file2);
        System.out.println("Two files are equal?" + areTwoFilesEqual);
    }

будет делать дело с Apache Commons IO API.

groovy с использованием xmlunit:

@Grab(group='xmlunit', module='xmlunit', version='1.6')
import org.custommonkey.xmlunit.XMLUnit 

XMLUnit.setIgnoreWhitespace(true)
def r1 = new File('/11/1.xml').newReader("UTF-8")
def r2 = new File('/11/2.xml').newReader("UTF-8")
def diff = XMLUnit.compareXML(r1, r2)
assert diff.similar()

Проголосовал, потому что это первый ответ, который не считает XML-файлы «разными» только потому, что они отличаются двоичным кодом.

Michal 19.03.2019 15:17

Вы можете сравнить два XML-файла с помощью визуального инструмента TreeOps https://github.com/treeops/treeops. Он преобразует и сравнивает данные дерева в XML/JSON/CSV. Пользователь может выбрать пути, которые будут игнорироваться при сравнении.

TreeOps определяет набор преобразований дерева данных для облегчения типичных манипуляций с данными:

  • фильтрация и удаление ненужных данных
  • переименование и перемещение узлов вдоль дерева
  • выравнивание и девыравнивание для преобразования между древовидным и табличным форматами
  • изменить узлы с помощью регулярных выражений под выбранными узлами

Другие вопросы по теме