Pregunta

Tengo un documento de Word 2003 guardado como XML en formato WordProcessingML. Contiene unos marcadores de posición que se reemplazan de forma dinámica por un contenido apropiado. Sin embargo, el problema es que la palabra aparentemente les divide aleatoriamente en las palabras separadas. Por ejemplo, en lugar de esto:

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

tengo esto:

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

¿Hay alguna manera de guardar un documento XML "limpia" utilizando Word 2003, o hay alguna solución existente que puede hacer la limpieza?

I intentado programar un método en Java que concatenar partes de los marcadores de posición separados, pero debido a que el número de combinaciones diferentes de corte es relativamente grande, el algoritmo para la que es mucho más compleja que una tarea original que tengo que hacer, por lo que es un problema por sí mismo.

¿Fue útil?

Solución

Otros consejos

Si usted tiene control sobre los documentos de Word originales, puede detener la Palabra de inserción rsid y poner de relieve los errores de gramática / ortografía.

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

Las palabras serán aún así obtener dividida, si por ejemplo se cambia la fuente en parte a través de la palabra.

Hmmm, tengo una sencilla + fea poco de XSLT, que he utilizado para limpiar WordML como el ejemplo informados. Podría comprometo a docx4j si lo desea, pero como usted dice, hay varias combinaciones que no estarían cubiertos. De todos modos, si lo desea, por favor, puesto que el foro docx4j.

Un enfoque más robusto sería para extraer el texto plano, y relacionar el texto plano para el XML, por lo que puede buscar en el texto sin formato, e ir de allí al XML.

Word 2003 XML es extraordinariamente complejo y difícil de descifrar. La razón por la que está recibiendo múltiples etiquetas se debe a que la Palabra ML genera etiquetas denominadas carreras (la w: r etiqueta). Por lo que yo sé, no hay una manera fácil de hacer la limpieza del XML anterior. Yo recomiendo usar HTML en lugar de WordML. Es la manera más fácil de manipular y reemplazar sus marcadores de posición con el contenido adecuado. Si el costo no es un objetivo, utilice un producto como Aspose. Se hace todo por usted y es fácil de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top