Pergunta

Eu tenho um documento Word 2003 salvo como um XML no formato WordProcessingML. Ele contém poucos espaços reservados que serão substituídos dinamicamente por um conteúdo apropriado. Mas, o problema é que a palavra aparentemente divide aleatoriamente nas palavras separadas. Por exemplo, em vez disso:

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

Eu tenho isto:

...
<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>
...

Existe alguma maneira de salvar um documento XML "limpo" usando o Word 2003, ou existe alguma solução existente que possa fazer a limpeza?

Tentei programar um método em Java que concatenará partes separadas dos espaços reservados, mas como o número de combinações de corte diferentes é relativamente grande, o algoritmo para isso é muito mais complexo do que uma tarefa original que eu tenho que fazer, por isso é problema por si mesmo.

Foi útil?

Solução

Outras dicas

Se você tiver controle sobre os documentos originais do Word, poderá impedir que a Word inserisse o RSID e destace erros de gramática/ortografia.

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

As palavras ainda serão divididas, se, por exemplo, você alterar a fonte em parte pela palavra.

Hmmm, eu tenho uma parte simples+feia do XSLT que eu usei para limpar o WordML como o exemplo que você postou. Eu poderia comprometê -lo com o DOCX4J se você quiser, mas como você diz, existem várias combinações que não seriam cobertas. De qualquer forma, se você quiser, poste no fórum Docx4J.

Uma abordagem mais robusta seria extrair o texto simples e relacionar o texto simples com o XML, para que você possa pesquisar no texto simples e ir de lá para o XML.

O Word 2003 XML é incomumente complexo e difícil de decodificar. O motivo pelo qual você está recebendo várias tags é porque o Word ML gera tags chamadas Runs (a tag W: R). Até onde eu sei, não há maneira fácil de limpar o XML acima. Eu recomendaria o uso de HTML em vez do WordML. É muito mais fácil manipular e substituir seus espaços reservados pelo conteúdo apropriado. Se o custo não for um objetivo, use um produto como Aspose. Faz tudo para você e é simples de usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top