Сравнение файлов Docx с использованием OOXML
Как я могу прочитать слово за словом (со стилями) из файла DOCX. Я хочу сравнить два docx-файла дословно и исходя из различий, которые мне нужно записать в другой docx-файл (используя C# и OOXML). Я пытался добиться этого с помощью DocumentFormat.OpenXml.Extensions.dll, OpenXMLdiff.dll и ICSharpCode.SharpZipLib.dll, но ничто не дает мне возможность читать слово в слово (ICSharpCode.SharpZipLib действительно дает слово в слово, но это не даст стиль, связанный с этим словом).
Любая помощь по этому вопросу будет очень полезна.
2 ответа
Эта статья MSDN показывает, как надежно получить точный текст документа, абзац за абзацем.
http://msdn.microsoft.com/en-us/library/ff686712.aspx
В то же время вы можете определить стиль для каждого абзаца. Это довольно легко. Следующая запись блога показывает, как получить стиль и текст для каждого абзаца:
Сравнивая два? Это зависит от вашей желаемой семантики. Одним из подходов будет создание XML-документа, который содержит абзацы и стили, а затем сравнение XML-документов. XML-документ может выглядеть примерно так:
<Root>
<Para>
<Style>Normal</Style>
<Text>This is the text of the paragraph.</Text>
</Para>
<Para>
<Style>Heading1</Style>
<Text>Overview of the Process</Text>
</Para>
</Root>
Самый простой способ - просто распаковать файл DOCX, используя вашу любимую библиотеку ZIP, а затем сравнить текстовые файлы с библиотекой файлового ввода-вывода.