Проверка документов / сравнение - PullRequest
0 голосов
/ 21 июня 2011

Есть ли способ сравнить два документа DOCX?

У меня есть один, который создается из документа шаблона, где некоторые разделы динамически удаляются с помощью закладок и блоков блоков из шаблона.

Я хотел бы сравнить сгенерированный документ с другим документом, который был бы ожидаемым результатом.

Я смутно слышал о сравнении контрольной суммы,

есть кто-нибудь, кто будет иметь несколько указателей на лучший способсравнить 2 документа?

Спасибо

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Вы можете использовать XMLUnit для .NET для сравнения основных частей документа (document.xml).

Вы можете получить основные части документа, используя OpenXML SDK или System.IO..Packaging.См. C # для замены строк текста в docx для получения дополнительной информации о последнем подходе.

0 голосов
/ 21 июня 2011

Я смутно слышал о контрольной сумме сравнение.

Контрольные суммы хорошо работают для сравнения байтовой точности байтов. Если это то, что вы ищете, то считайте байты каждого документа в поток и используйте SHA256Managed или MD5CryptoServiceProvider для генерации контрольной суммы для каждого файла. Если две контрольные суммы совпадают, то, скорее всего, два документа совпадают.

MD5 не подходит для целей безопасности (http://en.wikipedia.org/wiki/MD5 - см. «Безопасность»), но он подходит для целей сравнения, когда вы контролируете оба документа. Также имейте в виду, что контрольные суммы не являются на 100% уникальными, поэтому всегда существует удаленная возможность столкновения.

У меня есть тот, который генерируется из шаблон документа, где некоторые разделы удаляются динамически через закладки и разделы блоков из шаблон.

Однако, если вы сравниваете раздел за разделом, то вам, возможно, потребуется открыть документ размером больше, чем необработанные байты, и иметь дело с ним структурированным образом, например, раздел за разделом. Вы можете программно открыть файл .docx, используя c # (используя различные средства); возможно, вы сможете выполнить контрольную сумму для содержимого каждого раздела?

В этой теме рассказывается о создании / манипулировании файлами .docx с использованием c #: Как можно создать документ Word в C #? . Те же инструменты могут быть использованы для чтения одного.

...