Пользовательское сравнение файлов XML - PullRequest
3 голосов
/ 01 апреля 2011

Я видел много постов о сравнении XML, но ни один из тех, на которые я смотрел, не решил мою проблему.

У нас есть некоторые текстовые документы в формате XML (описания продуктов, сзаголовки и абзацы), которые обновляются (т.е. имеют версии), и мне было поручено сделать дайджесты изменений.То есть мы хотим взять два последовательных файла и сгенерировать третий;структура заголовка (контур) должна быть сохранена, но должны быть сохранены только абзацы с изменениями - должны быть отмечены дополнения и удаления.

Так что я пытался найти способ пройтии DOM-деревья, и обнаружение дополнений и удалений, но у меня возникают проблемы с их надежным обнаружением.Это очевидно, потому что я должен делать diff - но я не могу использовать простой diff, потому что я хочу делать отдельные diff внутри каждого элемента, и потому что я не могу использовать традиционный результат diff, но мне нужен полностью отформатированный xmlДайджест.

Есть ли какие-либо советы, прежде чем я попытаюсь решить "Самая длинная общая проблема подпоследовательности", которая будет огромной задачей?

Ответы [ 3 ]

4 голосов
/ 01 апреля 2011

Я бы предложил использовать XMLUnit в качестве движка для различий.Он предоставляет возможность использовать ваш собственный DifferenceListener , который уведомляется, когда два узла различны.В обработчике вы сможете обработать добавление соответствующих узлов DOM к целевому документу.

2 голосов
/ 01 апреля 2011

Профессиональное решение этой проблемы - но оно не бесплатное - это продукт DeltaXML.Покупать его, вероятно, будет дешевле, чем строить свой собственный.

0 голосов
/ 09 марта 2012

Оказывается, моя потребность не имела решения в то время!Тем временем я разработал свою собственную процедуру xml-diff, которая специфична для моей проблемы, поэтому я получил рабочее решение.

Затем, в конце 2011 года, было опубликовано: Slashdot: ИсследователиРасширяя Diff, Grep Unix Tools

Дартмутские компьютерщики представили варианты утилит командной строки grep и diff Unix, которые могут обрабатывать более сложные типы данных.Новые программы, называемые Context-Free Grep и Hierarchical Diff, предоставят возможность разбирать блоки данных, а не отдельные строки.Исследование частично финансировалось Google и Министерством энергетики США.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...