Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > smart compare for files |
Автор: sol78 6.11.2008, 14:39 |
Я ищу что вроде smart compare for HTML files. Чтобы сравнивал содержание файлов и выдавал разницу? Может кто то уже встречал что то подобное? Смысл этого в том что что я не хочу получать некоторые различия между файлами, поэтому byte compare не подходит. |
Автор: codelord 7.11.2008, 10:06 |
А по какой логике надо сравнивать? например на вскидку ручками так: Удаляем html теги из сравниваемых файлов, разбиваем по словам, засовываем по словам через разделитель в vector< std::string >, каждый из файлов и говорим std::sort и std::set_difference на два эти вектора, получаем разницу. |
Автор: chaos 7.11.2008, 11:59 |
sol78, можно посмотреть diff из линуха http://www.gnu.org/software/diffutils/diffutils.html |
Автор: sol78 7.11.2008, 16:20 |
Как это работает сейчас, например сравниваю 2 файла получаю разницу потом использую какою либо прогу, например wincom, и сама анализирую разницу, например определить линк можно по разному, но он стается один и тот же линк. Поэтому хочется что то более умное.... |
Автор: Torsten 7.11.2008, 16:32 |
Правильно поставленный вопрос, дает 50% правильного ответа. если считать вопросом : то я таких не видел, обычные которые используются в контролях версий итп и самый (на мой взгляд конечно же) удобный araxis тоже этого делать не умеет. Только по тупому, сравнить, определить куда какие строки перенесли, какие добавили и удалили. Так же предпологаю что таких и нету. |
Автор: skyboy 7.11.2008, 17:07 |
sol78, вся проблема - в отсутствии ясности. тебе надо сравнивать именно HTML? Тогда надо сравнивать не только текст, но и структуру. Возможно, строить дерево DOM, некоторые атрибуты игнорировать(class, title), некоторые элементы игнорировать(<hr>, <br>), некоторые элементы приводить к общему виду(> => ">") тебе надо сравнивать универсально и настраиваемо с исключениями из сравнения? создай к байтовой сравнялке механизм исключений - кормишь пару различий, а механизм определяет - правда ли куски различны, или различия можно игнорировать. можно сделать плагинами и определять условия через регулярные выражения. можно подключать как плагины простые скрипты, которые будут учитывать и окружающий различия текст. или тебе надо просто программа, которая подобное умеет и просто выбран не тот раздел? тогда так и скажи. если надо с исходниками - ищи на sourceforge.net тот же http://www.winmerge.org/ имеет механизм исключений(правда, немного другой - там строки, совпадающие с регуляркой, вообще исключаются из сравнения) |
Автор: Lazin 7.11.2008, 17:14 |
c html файлами это будет сложно сделать, для xhtml можно использовать XML DOM parser, а обычный html - очень неоднозначен и сложен для разбора, там к примеру может не быть некоторых закрывающих тэгов ![]() Добавлено через 2 минуты и 7 секунд вообще, если-бы вопрос был бы задан в разделе по python, я бы посоветовал beautiful soup, а какие html парсеры есть для с++ я не знаю ![]() |