Сравнение файлов 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

В то же время вы можете определить стиль для каждого абзаца. Это довольно легко. Следующая запись блога показывает, как получить стиль и текст для каждого абзаца:

http://blogs.msdn.com/b/ericwhite/archive/2009/02/16/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.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, а затем сравнить текстовые файлы с библиотекой файлового ввода-вывода.

Другие вопросы по тегам