Вопрос

У меня есть документ Word 2003, сохраненный как XML в формате WordProcessingML. Он содержит несколько заполнителей, которые будут динамически заменены подходящим контентом. Но проблема в том, что слово, казалось бы, случайно расщепляет их в отдельных словах. Например, вместо этого:

<w:t>${dl.d.out.ecs_rev}</w:t>

У меня есть это:

...
<w:t>${</w:t>
 </w:r>
 <w:r wsp:rsidR="005D11C0">
  <w:rPr>
   <w:sz w:val="20" />
   <w:sz-cs w:val="20" />
  </w:rPr>
  <w:t>dl.</w:t>
 </w:r>
<w:r wsp:rsidRPr="00696324">
 <w:rPr>
  <w:sz w:val="20" />
  <w:sz-cs w:val="20" />
 </w:rPr>
<w:t>d.out.ecs_rev}</w:t>
...

Есть ли способ сохранить «чистый» XML -документ, используя Word 2003, или существует какое -либо решение, которое может сделать очистку?

Я попытался запрограммировать метод на Java, который будет объединенным разделенными частями заполнителей, но поскольку количество различных комбинаций реза проблема для себя.

Это было полезно?

Решение

Вы можете использовать Aspose.words и вызвать это:

Document.joinrunswithsameformatting.

http://www.aspose.com/documentation/.net-components/aspose.words-for-.net-and-java/aspose.words.document.joinrunswithsameformatting.html

Другие советы

Если у вас есть контроль над исходными документами Word, вы можете остановить слово в вставке RSID и выделить грамматику/орфографические ошибки.

         Word.Options opts = Word.Options;
            opts.CheckGrammarAsYouType = false;
            opts.CheckGrammarWithSpelling = false;
            opts.CheckSpellingAsYouType = false;
            opts.StoreRSIDOnSave = false;

Слова все еще будут разделены, если, например, вы измените шрифт на размер слова.

Хм, у меня есть простой+уродливый кусочек XSLT, который я использовал для очистки WordMl, как пример, который вы разместили. Я мог бы посвятить его DOCX4J, если хотите, но, как вы говорите, есть различные комбинации, которые не будут покрыты. В любом случае, если вы этого хотите, отправьте опубликуйте на форуме DOCX4J.

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

Word 2003 XML необычайно сложный и трудно декодировать. Причина, по которой вы получаете несколько тегов, заключается в том, что Word ML генерирует теги, называемые Runs (TAG W: R). Насколько я знаю, нет простого способа сделать чистку XML выше. Я бы порекомендовал использовать HTML вместо WordMl. Гораздо проще манипулировать и заменить своих заполнителей подходящим контентом. Если стоимость не является целью, используйте такой продукт, как Aspose. Он делает все для вас и прост в использовании.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top