Domanda

Ho un documento di Word 2003 salvato come XML in formato WordprocessingML. Esso contiene pochi riferimenti che verranno sostituiti in modo dinamico da un contenuto adeguato. Ma, il problema è che Word apparentemente li divide in modo casuale nelle parole separate. Per esempio, invece di questo:

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

ho questo:

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

C'è un modo per salvare un documento XML "pulito" utilizzando Word 2003 o c'è qualche soluzione esistente che può fare le pulizie?

Ho cercato di programmare un metodo in Java che concatenare separate parti dei segnaposto, ma perché il numero di diverse combinazioni di taglio è relativamente grande, l'algoritmo per questo è molto più complesso di un compito originale che devo fare, quindi è un problema per se stesso.

È stato utile?

Soluzione

È possibile utilizzare Aspose.Words e invocare questo:

Document.JoinRunsWithSameFormatting.

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

Altri suggerimenti

Se si ha il controllo dei documenti di Word originale, ci si può fermare Word di inserire rsid ed evidenziando gli errori di grammatica / ortografia.

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

Parole saranno ancora ottenere diviso, se per esempio si cambia modo parte del carattere attraverso la parola.

Hmmm, ho un semplice + brutto po 'di XSLT che ho usato per pulire WordML come l'esempio che hai postato. Potrei impegno a docx4j se si vuole, ma come dici tu, ci sono varie combinazioni che non sarebbero coperti. In ogni caso, se lo vuoi, si prega di inviare al forum docx4j.

Un approccio più robusto sarebbe quello di estrarre il testo normale, e si riferiscono il testo in chiaro al codice XML, in modo da poter cercare il testo in chiaro, e passare da lì al XML.

Word XML 2003 è insolitamente complessa e difficile da decodificare. La ragione per cui si stanno ottenendo più tag è perché Word ML genera tag chiamati piste (il w: tag r). Per quanto ne so, non esiste un modo semplice per fare la pulizia del XML sopra. Ti consiglio di utilizzare HTML invece di WordML. È il modo più facile da manipolare e sostituire i segnaposto con i contenuti appropriati. Se il costo non è un obiettivo, utilizzare un prodotto come Aspose. Si fa tutto per te ed è semplice da usare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top