我有一个以 WordProcessingML 格式保存为 XML 的 Word 2003 文档。它包含很少的占位符,这些占位符将被动态替换为适当的内容。但是,问题是 Word 似乎随机地将它们分割成单独的单词。例如,代替这个:

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

有没有办法使用 Word 2003 保存“干净”的 XML 文档,或者是否有任何现有的解决方案可以进行清理?

我尝试用Java编写一种方法,将占位符的各个部分连接起来,但由于不同切割组合的数量相对较大,其算法比我必须做的原始任务复杂得多,所以它是自己的问题。

有帮助吗?

解决方案

其他提示

如果你有超过原来的Word文档控制,您可以将RSID,并强调语法/拼写错误停止字。

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

字仍然会得到分流,例如,如果你通过字更改字体部分的方式。

嗯,我有我使用清洁的WordML像你张贴的例子XSLT的简单+丑位。我可以提交它docx4j如果你想要的话,但就像你说的,有其不包括在内的各种组合。无论如何,如果你想要的话,请至docx4j论坛。

有一个更强大的方法是提取纯文本,并涉及纯文本的XML,所以你可以搜索纯文本,并从那里去到XML。

Word 2003的XML异常复杂,难以进行解码。你得到多个标签的原因是因为Word ML生成代码调用运行(在W:R标志)。据我所知,有没有简单的方法来做到干净上面的XML。我会建议使用HTML代替的WordML。这是比较容易的方式来处理,并与相应的内容替换您的占位符。 如果成本不是一个客观的,使用像的Aspose产品。它为你的一切,并且简单易用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top