感谢这个很棒的指南,我用 DOCX4J 做了一个简单的替换。
但现在我正在尝试做一些更复杂的事情。
我想做的是在文档中找到我的标记文本#1,在文档中找到我的标记文本#2,然后复制两者之间的所有内容。然后我将粘贴该内容 X 次并进行进一步的更改。
有谁知道我将如何做到这一点,并可能指出我需要的关键功能?
在一般情况下,这不是一件简单的事情,因为您的两个标记之间可能存在需要特殊处理的各种结构(想想图像、脚注、sectPr 元素、书签等)。关于一般情况,请参阅我在 MergeDocx 上的博客文章。
但是,如果您可以做出一些简化的假设,那么它会变得更容易。
首先,假设您的标记是块级元素。
其次,假设您的文档只是格式化的文本和表格。
然后你可以只对块级内容列表执行操作:
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
List<Object> blocks = documentPart.getContent();
有 XmlUtils.deepCopy 可以根据需要克隆对象。
对于违反假设 2 的每个结构,您都需要进行特定处理。如果您可以控制输入文档,您将能够管理它。
作为类似于使用书签的标记 #1 和 #2 的替代方法,请考虑使用块级内容控件。这避免了脆点标签;从 XML 的角度来看,它更好,并且在 Word 用户界面中提供了优势(从创作的角度来看)。