我正在尝试使用以下代码替换Word模板中的变量,将简单文本(String)写入Word文档:
MainDocumentPart documentPart = template.getMainDocumentPart();
try {
documentPart.variableReplace(replaceHashMap);
} catch (JAXBException e) {
e.printStackTrace();
} catch (Docx4JException e) {
e.printStackTrace();
}
在我的主课堂上,我有类似的东西:
for( StringWriter sw : wsdlHelper.getWSDLTemplateRequest() )
{
document.addHashMapping("API REQUEST", sw.toString().replace("<", "#1#").replace(">", "#2#"));
}
我正在替换字符串“&lt;”用“#1#”和“&gt;”用“#2#”进行测试,它完美无瑕。
但是,如果我删除这些替换项,Docx4j会将String解释为XML,有时甚至会通知未关闭的标记,并且所选变量(API REQUEST)的输出文档为空!
我只需将它解释为String并将Word文档作为纯文本“按原样”写入。 我正在尝试将Webservice的请求模板编写为简单文本,是否还有一种方法可以直接在文档中打印它?
答案 0 :(得分:0)
您的文档应包含$ {VAR}形式的变量。
文档被编组为一个字符串(包含XML)。
然后将$ {VAR}形式的子字符串替换为您指定的任何内容。
通常,这将是简单的文本,而不是XML。如果你想要一个尖括号&#39;&lt;&#39;要显示在输出中,请使用&amp; lt;
然后解组结果。意外内容被删除。