Docx4j 在 Word 文档中默认写入 XML

Docx4j writes XML as default in a Word document

我正在尝试通过使用以下代码替换 Word 模板中的变量来将简单文本 (String) 写入 Word 文档:

MainDocumentPart documentPart = template.getMainDocumentPart();
        try {
            documentPart.variableReplace(replaceHashMap);
        } catch (JAXBException e) {
            e.printStackTrace();
        } catch (Docx4JException e) {
            e.printStackTrace();
        }

在我的 Main class 中,我有这样的东西:

for( StringWriter sw : wsdlHelper.getWSDLTemplateRequest() )
        {
            document.addHashMapping("API REQUEST", sw.toString().replace("<", "#1#").replace(">", "#2#"));
        }

出于测试目的,我将字符串“<”替换为“#1#”,将“>”替换为“#2#”,并且效果完美。

但是如果我删除这些替换,Docx4j 会将字符串解释为 XML,有时甚至会通知未关闭的标签,并且在所选变量 (API REQUEST) 的位置输出文档是空!

我只需要将其解释为字符串并以纯文本形式写入 Word 文档 "as is"。 我正在尝试将Webservice的请求模板写成简单的文本,有没有办法直接在文档中漂亮地打印出来?

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

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

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

通常是简单的文本,而不是 XML。如果您希望尖括号“<”出现在输出中,请使用 <

然后对结果进行解组。意外内容已删除。