在文档级别添加命名空间定义

Add namespace definitions on document level

我正在动态生成包含多个段落的 DOCX 文档。由于 docx4j 抱怨缺少名称空间定义,因此我将它们添加到我的 <w:p /> 元素中。看来这很好用。

WordprocessingMLPackage wpMLPackage = getWordTemplate(FOOBAR);
MainDocumentPart mdp = wpMLPackage.getMainDocumentPart();

for (i = 0; i < LIMIT; ++i) {
    String paragraphXml = "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:v=\"urn:schemas-microsoft-com:vml\" w:rsidR=\"00085705\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" w:rsidRDefault=\"0088320D\">...</w:p>";

    mdp.addParagraph(paragraphXml);
}

但是,由于我在循环中重复该段落,命名空间定义将被添加不止一次。在更高的层次上只插入一次会更有意义。但我不知道该怎么做。

如何在 XML 结构中的更高级别添加 xmlns:* 参数? MainDocumentPartWordprocessingMLPackage 中有什么方法可以使用吗? Word 将命名空间定义添加到 <w:document />.

应该"just work"。也就是说,在不更改您的代码的情况下,JAXB 会将名称空间声明放在文档级别。