Допустимая разница в длине строки XML

13

Я посмотрел на ответы на этот вопрос , и, к сожалению, ни один из них не помог мне до сих пор.

Не говоря уже о кустарнике, второе издание C # in Depth теперь находится в режиме редактирования. Я хочу быть в состоянии увидеть, что редактор копирования действительно легко сделал, поэтому я могу отклонить или принять его изменения.

Мы используем измененную форму документации, но я достаточно счастлив, глядя на исходный XML-источник. Пока все в порядке - за исключением того, что когда редактор копий вносит изменения, это может изменить перенос строки. Итак, то, что раньше читало:

<para>Foo bar baz
 second line</para>

сейчас читает

<para>Foo bar grontle
 baz second line</para>

Теперь реальное изменение здесь - это вставка слова «grontle». Мне все равно, что «baz» переместился с первой строки на вторую, но все инструменты различий, которые я видел, делают.

Я понимаю, что одним из вариантов было бы переформатировать весь документ (или, возможно, просто целые абзацы) в одну строку ... но тогда это действительно трудно читать, потому что инструменты diff не переносятся при отображении.

Я уверен, что смогу справиться с инструментами, которые у меня есть, но если кто-нибудь знает что-то лучше, я был бы очень рад услышать об этом. Я подозреваю, что мои издатели тоже.

(Я включил сюда тег Windows, потому что мне действительно нужно, чтобы он был доступен в Windows. Я также хотел бы услышать о любом программном обеспечении, отличном от Windows, но только в том случае, если я смогу помочь создать его в Windows.

Джон Скит
источник

Ответы:

9

Похоже, SourceGear DiffMerge даст вам это с его поддержкой набора правил для XML (и многих других языков). Я не уверен, что это решит все ваши проблемы, потому что пример, конечно, является упрощением самой программы. Я попробовал немного более сложные изменения, и они, кажется, тоже работают нормально.

Смотрите образец ниже для различий вы описали

простой дифференциал

Сандер Рийкен
источник
1
Я только что быстро просмотрел реальные файлы, и похоже, что он отлично справляется со своей задачей. Спасибо так много!
Джон Скит
4

Мое решение вне всякого сравнения . (гораздо более мощный инструмент)

Итак, мы начинаем с рассмотрения проблемы.

введите описание изображения здесь

BC имеет специальную роль синтаксического анализа XML: (у него уже есть роль XML, но не с предварительным анализом - который отсортирован и приведен в порядок )

введите описание изображения здесь

поэтому мы идем на http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt

введите описание изображения здесь

и сейчас -

введите описание изображения здесь

надеюсь, что вы будете использовать его для следующего выпуска C # в глубине

ps если текст на картинках слишком маленький, просто нажмите на картинку, чтобы загрузить оригинальные.

Ройи Намир
источник
Кстати, что означает « Намир.78 »?
Pacerier
1

Я являюсь автором инструмента XML diff (коммерческого программного обеспечения), который должен выполнять эту работу (и некоторые другие функции). Существует тестовая версия (которая ограничена Xml-файлами не более 100 КБ) для загрузки здесь:

http://xmldifftool.com/download_en.html

Краткое введение также доступно здесь:

http://xmldifftool.com/xtcmanual_en.html

Мартин
источник
0

У меня была такая же проблема в компании не так давно. Они хотели найти настоящую «разницу XML», и там, похоже, не было готовых решений.

Самое простое решение - сначала запустить сценарий pretty-print для XML, чтобы нормализовать окончания строк и интервалы, а затем запустить инструмент сравнения diff ( WinMerge подходит для окон). Это избавляет от большого количества flotsam, который большинство difftools генерирует на вас из XML, и действительно легко создать сценарий.

jweede
источник
Проблема в том , что XML уже является довольно отпечатанной, эффективна - это вставки и делеция , что изменения , где линии заворачивают. Интересно, нужно ли мне что-то переформатировать один файл, основываясь на словах, которые встречаются на концах строк в другом :(
Джон Скит
0

SD Smart Differencer сравнивает документы на основе структуры, а не фактического макета.

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

Ира Бакстер
источник
0

@Jon Skeet: Вы упомянули в своем вопросе, что инструменты сравнения не переносятся при отображении.
vimdiff(также доступно в Windows через gvim) позволяет обернуть отображаемые XML-файлы :window set wrap. Ссылочная ссылка .
Также вы можете запустить, :diffupdateчтобы обновить различия.

гурум
источник