题
我有一个以 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编写一种方法,将占位符的各个部分连接起来,但由于不同切割组合的数量相对较大,其算法比我必须做的原始任务复杂得多,所以它是自己的问题。
解决方案
您可以使用 Aspose.Words 并调用它:
Document.JoinRunsWithSameFormatting。
其他提示
如果你有超过原来的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产品。它为你的一切,并且简单易用。
不隶属于 StackOverflow