Docx4j将XML作为默认值写入Word文档

时间:2016-03-23 10:45:38

标签: java xml ms-word hashmap docx4j

我正在尝试使用以下代码替换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的请求模板编写为简单文本,是否还有一种方法可以直接在文档中打印它?

1 个答案:

答案 0 :(得分:0)

您的文档应包含$ {VAR}形式的变量。

文档被编组为一个字符串(包含XML)。

然后将$ {VAR}形式的子字符串替换为您指定的任何内容。

通常,这将是简单的文本,而不是XML。如果你想要一个尖括号&#39;&lt;&#39;要显示在输出中,请使用&amp; lt;

然后解组结果。意外内容被删除。