DOCX4J - 在两个标记之间复制

时间:2013-03-16 21:13:36

标签: java ms-word docx4j

由于this awesome guide.

,我已经完成了DOCX4J的简单替换

但现在我正在尝试做一些更复杂的事情。

我想要做的是在文档中找到我的标记文本#1,在文档中找到我的标记文本#2,并在两者之间复制一切。然后,我会将该内容粘贴X次并进行进一步的更改。

有谁知道我会怎么做,并可能指出我需要的关键功能?

1 个答案:

答案 0 :(得分:1)

在一般情况下,这不是一件简单的事情,因为在你的两个标记之间可能存在各种需要特殊处理的结构(想想图像,脚注,sectPr元素,书签等)。关于这个一般情况,请参阅my blog post on MergeDocx

但是,如果你能做出一些简化的假设,那就变得容易了。

首先,假设您的标记是块级元素。

其次,假设您的文档只是格式化的文本和表格。

然后,您只需对块级内容列表执行操作:

MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
List<Object> blocks = documentPart.getContent();

有XmlUtils.deepCopy可以根据需要克隆对象。

对于违反假设2的每个结构,您需要具体处理。如果您可以控制输入文档,则可以对此进行管理。

作为标记#1和#2的替代方法,类似于使用书签,请考虑使用块级内容控件。这避免了脆点标记;从XML的角度来看它更好,并且在Word用户界面中提供了优势(从创作的角度来看)。