2012-06-12 2 views
1

У меня есть два больших xml-файла. Почти 1,4 мб каждый. Я хочу сравнить их и увидеть разную часть. Я использую linux. Есть ли бесплатный инструмент, который может сделать это для меня? Или любой другой метод?Сравнение двух файлов xml

Я использовал команду «diff» в linux и попытался вывести результат в другой файл. (diff file1.xml file2.xml> result.xml) Но полученный файл показал «Не удалось разобрать xml». Однако он показал что-то на экране. Я хотел бы, чтобы разная часть хранилась где-то, если это было возможно. (Или по крайней мере я должен быть в состоянии видеть это правильно)

Благодаря

Ragini

+0

[Beyond Compare] (http://www.scootersoftware.com/) поможет вам. – Jaguar

+0

[Melf Diff Viewer] (http://meldmerge.org/) - еще один вариант. – AurA

+0

как вы просматриваете result.xml? – nims

ответ

3

«Не удалось разобрать XML» может быть только выход из diff, если это различие. Для более визуального сопоставления (в зависимости от того, как отформатирован ваш XML-документ - справа и так далее), вы можете использовать, например, vimdiff.

Редактировать: как предложено в комментариях, meld действительно приятно.

Если файлы более пестрые, я предлагаю вам использовать простой XML-парсер. И проанализируйте тег по тегу, ребенок от ребенка ...

Редактировать: небольшой поисковый запрос Google показал мне, что есть некоторые реализации. Вероятно, это то, что вы ищете - xmldiff - http://www.logilab.org/859

+0

xmldiff прекрасен как концепция, но он НЕ будет работать с XML-файлами, этот большой (он начинает течь память и в конечном итоге замерзает, даже если есть только незначительные изменения). К сожалению, я еще не нашел лучшей альтернативы. –

0
[email protected]:~/temp$ ls -al 
total 28 
drwxrwxr-x 3 lo lo 4096 Jun 12 21:45 . 
drwxr-xr-x 88 lo lo 12288 Jun 12 21:45 .. 
-rw-rw-r-- 1 lo lo 1073 Jun 12 21:45 atom2.xml 
-rw-rw-r-- 1 lo lo 956 Jun 12 21:43 atom.xml 
drwxrwxr-x 3 lo lo 4096 Jun 9 16:56 _posts 
[email protected]:~/temp$ diff atom.xml atom2.xml > atom3.xml 
[email protected]:~/temp$ cat atom3.xml 
4a5,7 
> <?xml version="1.0" encoding="utf-8"?> 
> <?xml version="1.0" encoding="utf-8"?> 
> <?xml version="1.0" encoding="utf-8"?> 
[email protected]:~/temp$ 

Я пытался diff два *.xml и вывода на atom3.xml. Как вы можете видеть выше, все выглядит хорошо.

+0

вы можете уточнить, что означает «总 用量» в вашем ответе, btw спасибо за помощь – swiftBoy

+0

Похоже, что это означает «всего» (см. Http://stackoverflow.com/questions/7401704/what-is-that- всего-в-самом-первой линии-после-LS-L) – mwfearnley

0

Вы можете попробовать Pretty Diff. Он написан на JavaScript, поэтому он будет работать везде, где есть парсер JavaScript. Если что-то вроде Node.js установлено, оно может работать как автоматическая служба из командной строки в Linux. Компонент prettydiff.js настроен для использования в качестве модуля Common.js, который Node.js использует для своего API. Он работает следующим образом:

1) Он минимизирует два образца кода, чтобы удалить все узлы комментариев.

2) Он украшает два образца кода, так что пробелы и отступы нормализуются.

3) Он запускает алгоритм дифференциала.

Алгоритм diff ищет строки, которые не совпадают, а затем определяет, связаны ли эти различия с вставкой строк во втором источнике кода, удалением строк из первого источника кода или изменением строк, которые соответствуют. Когда происходят изменения, другой алгоритм diff ищет отличия в каждом символе, используя алгоритм пользовательского нечеткого строкового соответствия.

Результат - это отчет в формате HTML. См. Примеры samples page.

Смежные вопросы