【发布时间】:2014-07-28 15:16:46
【问题描述】:
我在 XPage 应用程序中使用 docx4j 创建包含 XPage 内容的 Word 文档。 Word 文档(.docx 格式)是基于模板(.dotx 格式)创建的。我的 .dotx 模板中的一个书签如下:
<w:p>
<w:bookmarkStart w:name="Fachkompetenz" w:id="0"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
使用函数
private static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) {
List<Object> result = new ArrayList<Object>();
if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue();
if (obj.getClass().equals(toSearch))
result.add(obj);
else if (obj instanceof ContentAccessor) {
List<?> children = ((ContentAccessor) obj).getContent();
for (Object child : children) {
result.addAll(getAllElementFromObject(child, toSearch));
}
}
return result;
}
我可以通过调用得到p对象
List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), P.class);
或调用 CTBookmark 对象
List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), P.class);
但是,一旦有了这些对象,我就不知道如何添加文本(XPage 内容)来替换书签。我已经在互联网上阅读了有关此主题的所有内容,但找不到任何方法。有人有什么建议吗?
【问题讨论】: