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

时间:2017-10-30 16:07:53

标签: xml xml-namespaces docx4j

我动态生成包含多个段落的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 />

1 个答案:

答案 0 :(得分:1)

它应该&#34;只是工作&#34;。也就是说,在不更改代码的情况下,JAXB会将名称空间声明放在文档级别。