Принять вставку и отклонить удаление openxml - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно сравнить два файла Word и объединить все вставки в третий. Мне удалось сделать это с помощью Open XML -Power-Tools и WmlCompare, но как мне отклонить только удаления?

Принимать вставки легко с OpenXmlPowerTools.RevisionAccepter, но я не могу получить отказ от удалений, чтобы работать таким образом, я бы получил объединенный файл без ревизий.

Если бы я воспользовался этим подходом или хотел бы Вы предлагаете другой подход?

Правила таковы:

  • 1) Текст можно добавлять в любом месте файла.
  • 2) Текст всегда добавляется в файл, никогда не удаляется.
  • 3) Файлы имеют расширение .docx

1 Ответ

1 голос
/ 16 февраля 2020

Относительно легко удалить или отменить удаление. Итак, скажем, у вас есть следующий пример абзаца с одним элементом w:del, который оборачивает удаленный элемент w:r.

<w:p>
  <w:r>
    <w:t xml:space="preserve">This is </w:t>
  </w:r>
  <w:del w:id="0" w:author="Thomas Barnekow" w:date="2020-02-16T14:37:00Z">
    <w:r>
      <w:delText xml:space="preserve">deleted </w:delText>
    </w:r>
  </w:del>
  <w:r>
    <w:t>text.</w:t>
  </w:r>
</w:p>

Чтобы отклонить удаление, вам нужно развернуть удаленный w:r и повернуть w:delText в w:t снова. Без дальнейшей обработки (см. Ниже) результат отклонения удаления будет выглядеть следующим образом:

<w:p>
  <w:r>
    <w:t xml:space="preserve">This is </w:t>
  </w:r>
  <w:r>
    <w:t xml:space="preserve">deleted </w:delText>
  </w:r>
  <w:r>
    <w:t>text.</w:t>
  </w:r>
</w:p>

В качестве необязательного шага, используя MarkupSimplifier из Open XML PowerTools, вы можете также объединяет смежные серии, имеющие одинаковое форматирование, что приведет к следующей разметке:

<w:p>
  <w:r>
    <w:t>This is deleted text.</w:t>
  </w:r>
</w:p>
...